1{ 2 "version info": { 3 "schema version": 2, 4 "api version": "1.2.158", 5 "comment": "from git branch: github-main commit: 9fd8fd599b47a67b2eb078b2f5c9e6a2adc922a4", 6 "date": "2020-10-19 04:39:54Z" 7 }, 8 "validation": { 9 "vkGetInstanceProcAddr": { 10 "core": [ 11 { 12 "vuid": "VUID-vkGetInstanceProcAddr-instance-parameter", 13 "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 14 }, 15 { 16 "vuid": "VUID-vkGetInstanceProcAddr-pName-parameter", 17 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 18 } 19 ] 20 }, 21 "vkGetDeviceProcAddr": { 22 "core": [ 23 { 24 "vuid": "VUID-vkGetDeviceProcAddr-device-parameter", 25 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 26 }, 27 { 28 "vuid": "VUID-vkGetDeviceProcAddr-pName-parameter", 29 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 30 } 31 ] 32 }, 33 "vkEnumerateInstanceVersion": { 34 "(VK_VERSION_1_1)": [ 35 { 36 "vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter", 37 "text": " <code>pApiVersion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 38 } 39 ] 40 }, 41 "vkCreateInstance": { 42 "core": [ 43 { 44 "vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388", 45 "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list" 46 }, 47 { 48 "vuid": "VUID-vkCreateInstance-pCreateInfo-parameter", 49 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a> structure" 50 }, 51 { 52 "vuid": "VUID-vkCreateInstance-pAllocator-parameter", 53 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 54 }, 55 { 56 "vuid": "VUID-vkCreateInstance-pInstance-parameter", 57 "text": " <code>pInstance</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkInstance\">VkInstance</a> handle" 58 } 59 ] 60 }, 61 "VkInstanceCreateInfo": { 62 "core": [ 63 { 64 "vuid": "VUID-VkInstanceCreateInfo-sType-sType", 65 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO</code>" 66 }, 67 { 68 "vuid": "VUID-VkInstanceCreateInfo-pNext-pNext", 69 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>" 70 }, 71 { 72 "vuid": "VUID-VkInstanceCreateInfo-sType-unique", 73 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>" 74 }, 75 { 76 "vuid": "VUID-VkInstanceCreateInfo-flags-zerobitmask", 77 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 78 }, 79 { 80 "vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter", 81 "text": " If <code>pApplicationInfo</code> is not <code>NULL</code>, <code>pApplicationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkApplicationInfo\">VkApplicationInfo</a> structure" 82 }, 83 { 84 "vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter", 85 "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings" 86 }, 87 { 88 "vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter", 89 "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings" 90 } 91 ] 92 }, 93 "VkValidationFlagsEXT": { 94 "(VK_EXT_validation_flags)": [ 95 { 96 "vuid": "VUID-VkValidationFlagsEXT-sType-sType", 97 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</code>" 98 }, 99 { 100 "vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter", 101 "text": " <code>pDisabledValidationChecks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationCheckCount</code> valid <a href=\"#VkValidationCheckEXT\">VkValidationCheckEXT</a> values" 102 }, 103 { 104 "vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength", 105 "text": " <code>disabledValidationCheckCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 106 } 107 ] 108 }, 109 "VkValidationFeaturesEXT": { 110 "(VK_EXT_validation_features)": [ 111 { 112 "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02967", 113 "text": " If the <code>pEnabledValidationFeatures</code> array contains <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT</code>, then it <strong class=\"purple\">must</strong> also contain <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT</code>" 114 }, 115 { 116 "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-02968", 117 "text": " If the <code>pEnabledValidationFeatures</code> array contains <code>VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT</code>, then it <strong class=\"purple\">must</strong> not contain <code>VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT</code>" 118 }, 119 { 120 "vuid": "VUID-VkValidationFeaturesEXT-sType-sType", 121 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</code>" 122 }, 123 { 124 "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter", 125 "text": " If <code>enabledValidationFeatureCount</code> is not <code>0</code>, <code>pEnabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureEnableEXT\">VkValidationFeatureEnableEXT</a> values" 126 }, 127 { 128 "vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter", 129 "text": " If <code>disabledValidationFeatureCount</code> is not <code>0</code>, <code>pDisabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureDisableEXT\">VkValidationFeatureDisableEXT</a> values" 130 } 131 ] 132 }, 133 "VkApplicationInfo": { 134 "core": [ 135 { 136 "vuid": "VUID-VkApplicationInfo-apiVersion-04010", 137 "text": " If <code>apiVersion</code> is not <code>0</code>, then it <strong class=\"purple\">must</strong> be greater or equal to <a href=\"#VK_API_VERSION_1_0\">VK_API_VERSION_1_0</a>" 138 }, 139 { 140 "vuid": "VUID-VkApplicationInfo-sType-sType", 141 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>" 142 }, 143 { 144 "vuid": "VUID-VkApplicationInfo-pNext-pNext", 145 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 146 }, 147 { 148 "vuid": "VUID-VkApplicationInfo-pApplicationName-parameter", 149 "text": " If <code>pApplicationName</code> is not <code>NULL</code>, <code>pApplicationName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 150 }, 151 { 152 "vuid": "VUID-VkApplicationInfo-pEngineName-parameter", 153 "text": " If <code>pEngineName</code> is not <code>NULL</code>, <code>pEngineName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 154 } 155 ] 156 }, 157 "vkDestroyInstance": { 158 "core": [ 159 { 160 "vuid": "VUID-vkDestroyInstance-instance-00629", 161 "text": " All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>" 162 }, 163 { 164 "vuid": "VUID-vkDestroyInstance-instance-00630", 165 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 166 }, 167 { 168 "vuid": "VUID-vkDestroyInstance-instance-00631", 169 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 170 }, 171 { 172 "vuid": "VUID-vkDestroyInstance-instance-parameter", 173 "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 174 }, 175 { 176 "vuid": "VUID-vkDestroyInstance-pAllocator-parameter", 177 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 178 } 179 ] 180 }, 181 "vkEnumeratePhysicalDevices": { 182 "core": [ 183 { 184 "vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter", 185 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 186 }, 187 { 188 "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter", 189 "text": " <code>pPhysicalDeviceCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 190 }, 191 { 192 "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter", 193 "text": " If the value referenced by <code>pPhysicalDeviceCount</code> is not <code>0</code>, and <code>pPhysicalDevices</code> is not <code>NULL</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceCount</code> <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handles" 194 } 195 ] 196 }, 197 "vkGetPhysicalDeviceProperties": { 198 "core": [ 199 { 200 "vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter", 201 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 202 }, 203 { 204 "vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter", 205 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceProperties\">VkPhysicalDeviceProperties</a> structure" 206 } 207 ] 208 }, 209 "vkGetPhysicalDeviceProperties2": { 210 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 211 { 212 "vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter", 213 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 214 }, 215 { 216 "vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter", 217 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceProperties2\">VkPhysicalDeviceProperties2</a> structure" 218 } 219 ] 220 }, 221 "VkPhysicalDeviceProperties2": { 222 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 223 { 224 "vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType", 225 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>" 226 }, 227 { 228 "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext", 229 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingProperties\">VkPhysicalDeviceDescriptorIndexingProperties</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverProperties\">VkPhysicalDeviceDriverProperties</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsProperties\">VkPhysicalDeviceFloatControlsProperties</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2PropertiesEXT\">VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRatePropertiesKHR\">VkPhysicalDeviceFragmentShadingRatePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockPropertiesEXT\">VkPhysicalDeviceInlineUniformBlockPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationPropertiesEXT\">VkPhysicalDeviceLineRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2PropertiesEXT\">VkPhysicalDeviceRobustness2PropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxProperties\">VkPhysicalDeviceSamplerFilterMinmaxProperties</a>, <a href=\"#VkPhysicalDeviceShaderCoreProperties2AMD\">VkPhysicalDeviceShaderCoreProperties2AMD</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsPropertiesNV\">VkPhysicalDeviceShaderSMBuiltinsPropertiesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlPropertiesEXT\">VkPhysicalDeviceSubgroupSizeControlPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreProperties\">VkPhysicalDeviceTimelineSemaphoreProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Properties\">VkPhysicalDeviceVulkan11Properties</a>, or <a href=\"#VkPhysicalDeviceVulkan12Properties\">VkPhysicalDeviceVulkan12Properties</a>" 230 }, 231 { 232 "vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique", 233 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 234 } 235 ] 236 }, 237 "VkPhysicalDeviceVulkan11Properties": { 238 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2)": [ 239 { 240 "vuid": "VUID-VkPhysicalDeviceVulkan11Properties-sType-sType", 241 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES</code>" 242 } 243 ] 244 }, 245 "VkPhysicalDeviceVulkan12Properties": { 246 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2)": [ 247 { 248 "vuid": "VUID-VkPhysicalDeviceVulkan12Properties-sType-sType", 249 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES</code>" 250 } 251 ] 252 }, 253 "VkPhysicalDeviceIDProperties": { 254 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities)": [ 255 { 256 "vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType", 257 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>" 258 } 259 ] 260 }, 261 "VkPhysicalDeviceDriverProperties": { 262 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_2,VK_KHR_driver_properties)": [ 263 { 264 "vuid": "VUID-VkPhysicalDeviceDriverProperties-sType-sType", 265 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES</code>" 266 } 267 ] 268 }, 269 "VkPhysicalDevicePCIBusInfoPropertiesEXT": { 270 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [ 271 { 272 "vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType", 273 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT</code>" 274 } 275 ] 276 }, 277 "vkGetPhysicalDeviceQueueFamilyProperties": { 278 "core": [ 279 { 280 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter", 281 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 282 }, 283 { 284 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter", 285 "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 286 }, 287 { 288 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter", 289 "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a> structures" 290 } 291 ] 292 }, 293 "vkGetPhysicalDeviceQueueFamilyProperties2": { 294 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 295 { 296 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter", 297 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 298 }, 299 { 300 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter", 301 "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 302 }, 303 { 304 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter", 305 "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <a href=\"#VkQueueFamilyProperties2\">VkQueueFamilyProperties2</a> structures" 306 } 307 ] 308 }, 309 "VkQueueFamilyProperties2": { 310 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 311 { 312 "vuid": "VUID-VkQueueFamilyProperties2-sType-sType", 313 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>" 314 }, 315 { 316 "vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext", 317 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkQueueFamilyCheckpointPropertiesNV\">VkQueueFamilyCheckpointPropertiesNV</a>" 318 }, 319 { 320 "vuid": "VUID-VkQueueFamilyProperties2-sType-unique", 321 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 322 } 323 ] 324 }, 325 "VkQueueFamilyCheckpointPropertiesNV": { 326 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [ 327 { 328 "vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType", 329 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV</code>" 330 } 331 ] 332 }, 333 "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR": { 334 "(VK_KHR_performance_query)": [ 335 { 336 "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-physicalDevice-parameter", 337 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 338 }, 339 { 340 "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterCount-parameter", 341 "text": " <code>pCounterCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 342 }, 343 { 344 "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounters-parameter", 345 "text": " If the value referenced by <code>pCounterCount</code> is not <code>0</code>, and <code>pCounters</code> is not <code>NULL</code>, <code>pCounters</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCounterCount</code> <a href=\"#VkPerformanceCounterKHR\">VkPerformanceCounterKHR</a> structures" 346 }, 347 { 348 "vuid": "VUID-vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR-pCounterDescriptions-parameter", 349 "text": " If the value referenced by <code>pCounterCount</code> is not <code>0</code>, and <code>pCounterDescriptions</code> is not <code>NULL</code>, <code>pCounterDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCounterCount</code> <a href=\"#VkPerformanceCounterDescriptionKHR\">VkPerformanceCounterDescriptionKHR</a> structures" 350 } 351 ] 352 }, 353 "VkPerformanceCounterKHR": { 354 "(VK_KHR_performance_query)": [ 355 { 356 "vuid": "VUID-VkPerformanceCounterKHR-sType-sType", 357 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR</code>" 358 }, 359 { 360 "vuid": "VUID-VkPerformanceCounterKHR-pNext-pNext", 361 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 362 } 363 ] 364 }, 365 "VkPerformanceCounterDescriptionKHR": { 366 "(VK_KHR_performance_query)": [ 367 { 368 "vuid": "VUID-VkPerformanceCounterDescriptionKHR-sType-sType", 369 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR</code>" 370 }, 371 { 372 "vuid": "VUID-VkPerformanceCounterDescriptionKHR-pNext-pNext", 373 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 374 } 375 ] 376 }, 377 "vkEnumeratePhysicalDeviceGroups": { 378 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [ 379 { 380 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter", 381 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 382 }, 383 { 384 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter", 385 "text": " <code>pPhysicalDeviceGroupCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 386 }, 387 { 388 "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter", 389 "text": " If the value referenced by <code>pPhysicalDeviceGroupCount</code> is not <code>0</code>, and <code>pPhysicalDeviceGroupProperties</code> is not <code>NULL</code>, <code>pPhysicalDeviceGroupProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceGroupCount</code> <a href=\"#VkPhysicalDeviceGroupProperties\">VkPhysicalDeviceGroupProperties</a> structures" 390 } 391 ] 392 }, 393 "VkPhysicalDeviceGroupProperties": { 394 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [ 395 { 396 "vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType", 397 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES</code>" 398 }, 399 { 400 "vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext", 401 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 402 } 403 ] 404 }, 405 "vkCreateDevice": { 406 "core": [ 407 { 408 "vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387", 409 "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list" 410 }, 411 { 412 "vuid": "VUID-vkCreateDevice-physicalDevice-parameter", 413 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 414 }, 415 { 416 "vuid": "VUID-vkCreateDevice-pCreateInfo-parameter", 417 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a> structure" 418 }, 419 { 420 "vuid": "VUID-vkCreateDevice-pAllocator-parameter", 421 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 422 }, 423 { 424 "vuid": "VUID-vkCreateDevice-pDevice-parameter", 425 "text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDevice\">VkDevice</a> handle" 426 } 427 ] 428 }, 429 "VkDeviceCreateInfo": { 430 "!(VK_VERSION_1_1)": [ 431 { 432 "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372", 433 "text": " The <code>queueFamilyIndex</code> member of each element of <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be unique within <code>pQueueCreateInfos</code>" 434 } 435 ], 436 "(VK_VERSION_1_1)": [ 437 { 438 "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-02802", 439 "text": " The <code>queueFamilyIndex</code> member of each element of <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be unique within <code>pQueueCreateInfos</code>, except that two members can share the same <code>queueFamilyIndex</code> if one is a protected-capable queue and one is not a protected-capable queue" 440 } 441 ], 442 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 443 { 444 "vuid": "VUID-VkDeviceCreateInfo-pNext-00373", 445 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure, then <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 446 } 447 ], 448 "(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [ 449 { 450 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840", 451 "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>" 452 } 453 ], 454 "(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_KHR_maintenance1)": [ 455 { 456 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374", 457 "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a></code> and <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>" 458 } 459 ], 460 "(VK_EXT_buffer_device_address+VK_KHR_buffer_device_address)": [ 461 { 462 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-03328", 463 "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_buffer_device_address\">VK_KHR_buffer_device_address</a></code> and <code><a href=\"#VK_EXT_buffer_device_address\">VK_EXT_buffer_device_address</a></code>" 464 } 465 ], 466 "(VK_VERSION_1_2)": [ 467 { 468 "vuid": "VUID-VkDeviceCreateInfo-pNext-02829", 469 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a> structure, then it <strong class=\"purple\">must</strong> not include a <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, or <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a> structure" 470 }, 471 { 472 "vuid": "VUID-VkDeviceCreateInfo-pNext-02830", 473 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then it <strong class=\"purple\">must</strong> not include a <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, or <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a> structure" 474 } 475 ], 476 "(VK_VERSION_1_2)+(VK_KHR_shader_draw_parameters)": [ 477 { 478 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-04476", 479 "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_shader_draw_parameters\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a> structure, then <code>VkPhysicalDeviceVulkan11Features</code>::<code>shaderDrawParameters</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 480 } 481 ], 482 "(VK_VERSION_1_2)+(VK_KHR_draw_indirect_count)": [ 483 { 484 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02831", 485 "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_draw_indirect_count\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>drawIndirectCount</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 486 } 487 ], 488 "(VK_VERSION_1_2)+(VK_KHR_sampler_mirror_clamp_to_edge)": [ 489 { 490 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02832", 491 "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_KHR_sampler_mirror_clamp_to_edge\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>samplerMirrorClampToEdge</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 492 } 493 ], 494 "(VK_VERSION_1_2)+(VK_EXT_descriptor_indexing)": [ 495 { 496 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02833", 497 "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_descriptor_indexing\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>descriptorIndexing</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 498 } 499 ], 500 "(VK_VERSION_1_2)+(VK_EXT_sampler_filter_minmax)": [ 501 { 502 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02834", 503 "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_sampler_filter_minmax\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>samplerFilterMinmax</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 504 } 505 ], 506 "(VK_VERSION_1_2)+(VK_EXT_shader_viewport_index_layer)": [ 507 { 508 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensions-02835", 509 "text": " If <code>ppEnabledExtensions</code> contains <code>\"VK_EXT_shader_viewport_index_layer\"</code> and the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a> structure, then <code>VkPhysicalDeviceVulkan12Features</code>::<code>shaderOutputViewportIndex</code> and <code>VkPhysicalDeviceVulkan12Features</code>::<code>shaderOutputLayer</code> <strong class=\"purple\">must</strong> both be <code>VK_TRUE</code>" 510 } 511 ], 512 "(VK_KHR_portability_subset)": [ 513 { 514 "vuid": "VUID-VkDeviceCreateInfo-pProperties-04451", 515 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is included in <code>pProperties</code> of <a href=\"#vkEnumerateDeviceExtensionProperties\">vkEnumerateDeviceExtensionProperties</a>, <code>ppEnabledExtensions</code> <strong class=\"purple\">must</strong> include \"VK_KHR_portability_subset\"." 516 } 517 ], 518 "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [ 519 { 520 "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04478", 521 "text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled" 522 }, 523 { 524 "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04479", 525 "text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled" 526 }, 527 { 528 "vuid": "VUID-VkDeviceCreateInfo-shadingRateImage-04480", 529 "text": " If <a href=\"#features-shadingRateImage\"><code>shadingRateImage</code></a> is enabled, <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled" 530 } 531 ], 532 "(VK_KHR_fragment_shading_rate,VK_EXT_fragment_density_map)": [ 533 { 534 "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04481", 535 "text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled" 536 }, 537 { 538 "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04482", 539 "text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled" 540 }, 541 { 542 "vuid": "VUID-VkDeviceCreateInfo-fragmentDensityMap-04483", 543 "text": " If <a href=\"#features-fragmentDensityMap\"><code>fragmentDensityMap</code></a> is enabled, <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> not be enabled" 544 } 545 ], 546 "core": [ 547 { 548 "vuid": "VUID-VkDeviceCreateInfo-sType-sType", 549 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>" 550 }, 551 { 552 "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext", 553 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a>, <a href=\"#VkDeviceDiagnosticsConfigCreateInfoNV\">VkDeviceDiagnosticsConfigCreateInfoNV</a>, <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkDevicePrivateDataCreateInfoEXT\">VkDevicePrivateDataCreateInfoEXT</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice4444FormatsFeaturesEXT\">VkPhysicalDevice4444FormatsFeaturesEXT</a>, <a href=\"#VkPhysicalDevice8BitStorageFeatures\">VkPhysicalDevice8BitStorageFeatures</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>, <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeaturesEXT\">VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCoherentMemoryFeaturesAMD\">VkPhysicalDeviceCoherentMemoryFeaturesAMD</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCoverageReductionModeFeaturesNV\">VkPhysicalDeviceCoverageReductionModeFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCustomBorderColorFeaturesEXT\">VkPhysicalDeviceCustomBorderColorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>, <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV\">VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDeviceMemoryReportFeaturesEXT\">VkPhysicalDeviceDeviceMemoryReportFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDiagnosticsConfigFeaturesNV\">VkPhysicalDeviceDiagnosticsConfigFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceExtendedDynamicStateFeaturesEXT\">VkPhysicalDeviceExtendedDynamicStateFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMap2FeaturesEXT\">VkPhysicalDeviceFragmentDensityMap2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT\">VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShadingRateFeaturesKHR\">VkPhysicalDeviceFragmentShadingRateFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceHostQueryResetFeatures\">VkPhysicalDeviceHostQueryResetFeatures</a>, <a href=\"#VkPhysicalDeviceImageRobustnessFeaturesEXT\">VkPhysicalDeviceImageRobustnessFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceImagelessFramebufferFeatures\">VkPhysicalDeviceImagelessFramebufferFeatures</a>, <a href=\"#VkPhysicalDeviceIndexTypeUint8FeaturesEXT\">VkPhysicalDeviceIndexTypeUint8FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceLineRasterizationFeaturesEXT\">VkPhysicalDeviceLineRasterizationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDevicePerformanceQueryFeaturesKHR\">VkPhysicalDevicePerformanceQueryFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT\">VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT</a>, <a href=\"#VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR\">VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>, <a href=\"#VkPhysicalDevicePrivateDataFeaturesEXT\">VkPhysicalDevicePrivateDataFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRayTracingFeaturesKHR\">VkPhysicalDeviceRayTracingFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceRobustness2FeaturesEXT\">VkPhysicalDeviceRobustness2FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeatures\">VkPhysicalDeviceScalarBlockLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures\">VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures</a>, <a href=\"#VkPhysicalDeviceShaderAtomicFloatFeaturesEXT\">VkPhysicalDeviceShaderAtomicFloatFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64Features\">VkPhysicalDeviceShaderAtomicInt64Features</a>, <a href=\"#VkPhysicalDeviceShaderClockFeaturesKHR\">VkPhysicalDeviceShaderClockFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT\">VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderDrawParametersFeatures\">VkPhysicalDeviceShaderDrawParametersFeatures</a>, <a href=\"#VkPhysicalDeviceShaderFloat16Int8Features\">VkPhysicalDeviceShaderFloat16Int8Features</a>, <a href=\"#VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT\">VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL\">VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL</a>, <a href=\"#VkPhysicalDeviceShaderSMBuiltinsFeaturesNV\">VkPhysicalDeviceShaderSMBuiltinsFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures\">VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures</a>, <a href=\"#VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR\">VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupSizeControlFeaturesEXT\">VkPhysicalDeviceSubgroupSizeControlFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT\">VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT\">VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceTimelineSemaphoreFeatures\">VkPhysicalDeviceTimelineSemaphoreFeatures</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceUniformBufferStandardLayoutFeatures\">VkPhysicalDeviceUniformBufferStandardLayoutFeatures</a>, <a href=\"#VkPhysicalDeviceVariablePointersFeatures\">VkPhysicalDeviceVariablePointersFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkan11Features\">VkPhysicalDeviceVulkan11Features</a>, <a href=\"#VkPhysicalDeviceVulkan12Features\">VkPhysicalDeviceVulkan12Features</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeatures\">VkPhysicalDeviceVulkanMemoryModelFeatures</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>" 554 }, 555 { 556 "vuid": "VUID-VkDeviceCreateInfo-sType-unique", 557 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique, with the exception of structures of type <a href=\"#VkDeviceDeviceMemoryReportCreateInfoEXT\">VkDeviceDeviceMemoryReportCreateInfoEXT</a> or <a href=\"#VkDevicePrivateDataCreateInfoEXT\">VkDevicePrivateDataCreateInfoEXT</a>" 558 }, 559 { 560 "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask", 561 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 562 }, 563 { 564 "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter", 565 "text": " <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCreateInfoCount</code> valid <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structures" 566 }, 567 { 568 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter", 569 "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings" 570 }, 571 { 572 "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter", 573 "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings" 574 }, 575 { 576 "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter", 577 "text": " If <code>pEnabledFeatures</code> is not <code>NULL</code>, <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceFeatures\">VkPhysicalDeviceFeatures</a> structure" 578 }, 579 { 580 "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength", 581 "text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 582 } 583 ] 584 }, 585 "VkDeviceGroupDeviceCreateInfo": { 586 "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [ 587 { 588 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375", 589 "text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique" 590 }, 591 { 592 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376", 593 "text": " All elements of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be in the same device group as enumerated by <a href=\"#vkEnumeratePhysicalDeviceGroups\">vkEnumeratePhysicalDeviceGroups</a>" 594 }, 595 { 596 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377", 597 "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, the <code>physicalDevice</code> parameter of <a href=\"#vkCreateDevice\">vkCreateDevice</a> <strong class=\"purple\">must</strong> be an element of <code>pPhysicalDevices</code>" 598 }, 599 { 600 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType", 601 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>" 602 }, 603 { 604 "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter", 605 "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>physicalDeviceCount</code> valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handles" 606 } 607 ] 608 }, 609 "VkDeviceMemoryOverallocationCreateInfoAMD": { 610 "(VK_AMD_memory_overallocation_behavior)": [ 611 { 612 "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType", 613 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>" 614 }, 615 { 616 "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter", 617 "text": " <code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value" 618 } 619 ] 620 }, 621 "VkDeviceDiagnosticsConfigCreateInfoNV": { 622 "(VK_NV_device_diagnostics_config)": [ 623 { 624 "vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-sType-sType", 625 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV</code>" 626 }, 627 { 628 "vuid": "VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter", 629 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceDiagnosticsConfigFlagBitsNV\">VkDeviceDiagnosticsConfigFlagBitsNV</a> values" 630 } 631 ] 632 }, 633 "VkDeviceDeviceMemoryReportCreateInfoEXT": { 634 "(VK_EXT_device_memory_report)": [ 635 { 636 "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-sType-sType", 637 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT</code>" 638 }, 639 { 640 "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-flags-zerobitmask", 641 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 642 }, 643 { 644 "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pfnUserCallback-parameter", 645 "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDeviceMemoryReportCallbackEXT\">PFN_vkDeviceMemoryReportCallbackEXT</a> value" 646 }, 647 { 648 "vuid": "VUID-VkDeviceDeviceMemoryReportCreateInfoEXT-pUserData-parameter", 649 "text": " <code>pUserData</code> <strong class=\"purple\">must</strong> be a pointer value" 650 } 651 ] 652 }, 653 "VkDeviceMemoryReportCallbackDataEXT": { 654 "(VK_EXT_device_memory_report)": [ 655 { 656 "vuid": "VUID-VkDeviceMemoryReportCallbackDataEXT-sType-sType", 657 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT</code>" 658 }, 659 { 660 "vuid": "VUID-VkDeviceMemoryReportCallbackDataEXT-pNext-pNext", 661 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 662 } 663 ] 664 }, 665 "VkDevicePrivateDataCreateInfoEXT": { 666 "(VK_EXT_private_data)": [ 667 { 668 "vuid": "VUID-VkDevicePrivateDataCreateInfoEXT-sType-sType", 669 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT</code>" 670 } 671 ] 672 }, 673 "vkDestroyDevice": { 674 "core": [ 675 { 676 "vuid": "VUID-vkDestroyDevice-device-00378", 677 "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>" 678 }, 679 { 680 "vuid": "VUID-vkDestroyDevice-device-00379", 681 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 682 }, 683 { 684 "vuid": "VUID-vkDestroyDevice-device-00380", 685 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 686 }, 687 { 688 "vuid": "VUID-vkDestroyDevice-device-parameter", 689 "text": " If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 690 }, 691 { 692 "vuid": "VUID-vkDestroyDevice-pAllocator-parameter", 693 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 694 } 695 ] 696 }, 697 "VkDeviceQueueCreateInfo": { 698 "core": [ 699 { 700 "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381", 701 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>" 702 }, 703 { 704 "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382", 705 "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>queueCount</code> member of the <code>VkQueueFamilyProperties</code> structure, as returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> in the <code>pQueueFamilyProperties</code>[queueFamilyIndex]" 706 }, 707 { 708 "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383", 709 "text": " Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive" 710 }, 711 { 712 "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType", 713 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>" 714 }, 715 { 716 "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext", 717 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceQueueGlobalPriorityCreateInfoEXT\">VkDeviceQueueGlobalPriorityCreateInfoEXT</a>" 718 }, 719 { 720 "vuid": "VUID-VkDeviceQueueCreateInfo-sType-unique", 721 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 722 }, 723 { 724 "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter", 725 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values" 726 }, 727 { 728 "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter", 729 "text": " <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values" 730 }, 731 { 732 "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength", 733 "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 734 } 735 ], 736 "(VK_VERSION_1_1)": [ 737 { 738 "vuid": "VUID-VkDeviceQueueCreateInfo-flags-02861", 739 "text": " If the <a href=\"#features-protectedMemory\">protected memory</a> feature is not enabled, the <code>VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set" 740 } 741 ] 742 }, 743 "VkDeviceQueueGlobalPriorityCreateInfoEXT": { 744 "(VK_EXT_global_priority)": [ 745 { 746 "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType", 747 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>" 748 }, 749 { 750 "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter", 751 "text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value" 752 } 753 ] 754 }, 755 "vkGetDeviceQueue": { 756 "core": [ 757 { 758 "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384", 759 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure" 760 }, 761 { 762 "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385", 763 "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index when <code>device</code> was created, via the <code>queueCount</code> member of the <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure" 764 }, 765 { 766 "vuid": "VUID-vkGetDeviceQueue-flags-01841", 767 "text": " <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> have been set to zero when <code>device</code> was created" 768 }, 769 { 770 "vuid": "VUID-vkGetDeviceQueue-device-parameter", 771 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 772 }, 773 { 774 "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter", 775 "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueue\">VkQueue</a> handle" 776 } 777 ] 778 }, 779 "vkGetDeviceQueue2": { 780 "(VK_VERSION_1_1)": [ 781 { 782 "vuid": "VUID-vkGetDeviceQueue2-device-parameter", 783 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 784 }, 785 { 786 "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter", 787 "text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceQueueInfo2\">VkDeviceQueueInfo2</a> structure" 788 }, 789 { 790 "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter", 791 "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueue\">VkQueue</a> handle" 792 } 793 ] 794 }, 795 "VkDeviceQueueInfo2": { 796 "(VK_VERSION_1_1)": [ 797 { 798 "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842", 799 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure" 800 }, 801 { 802 "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843", 803 "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index and <a href=\"#VkDeviceQueueCreateFlags\">VkDeviceQueueCreateFlags</a> member <code>flags</code> equal to this <code>flags</code> value when <code>device</code> was created, via the <code>queueCount</code> member of the <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a> structure" 804 }, 805 { 806 "vuid": "VUID-VkDeviceQueueInfo2-sType-sType", 807 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>" 808 }, 809 { 810 "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext", 811 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 812 }, 813 { 814 "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter", 815 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values" 816 } 817 ] 818 }, 819 "vkCreateCommandPool": { 820 "core": [ 821 { 822 "vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937", 823 "text": " <code>pCreateInfo->queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the logical device <code>device</code>" 824 }, 825 { 826 "vuid": "VUID-vkCreateCommandPool-device-parameter", 827 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 828 }, 829 { 830 "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter", 831 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure" 832 }, 833 { 834 "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter", 835 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 836 }, 837 { 838 "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter", 839 "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkCommandPool\">VkCommandPool</a> handle" 840 } 841 ] 842 }, 843 "VkCommandPoolCreateInfo": { 844 "(VK_VERSION_1_1)": [ 845 { 846 "vuid": "VUID-VkCommandPoolCreateInfo-flags-02860", 847 "text": " If the protected memory feature is not enabled, the <code>VK_COMMAND_POOL_CREATE_PROTECTED_BIT</code> bit of <code>flags</code> <strong class=\"purple\">must</strong> not be set" 848 } 849 ], 850 "core": [ 851 { 852 "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType", 853 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>" 854 }, 855 { 856 "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext", 857 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 858 }, 859 { 860 "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter", 861 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values" 862 } 863 ] 864 }, 865 "vkTrimCommandPool": { 866 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 867 { 868 "vuid": "VUID-vkTrimCommandPool-device-parameter", 869 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 870 }, 871 { 872 "vuid": "VUID-vkTrimCommandPool-commandPool-parameter", 873 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle" 874 }, 875 { 876 "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask", 877 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 878 }, 879 { 880 "vuid": "VUID-vkTrimCommandPool-commandPool-parent", 881 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 882 } 883 ] 884 }, 885 "vkResetCommandPool": { 886 "core": [ 887 { 888 "vuid": "VUID-vkResetCommandPool-commandPool-00040", 889 "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 890 }, 891 { 892 "vuid": "VUID-vkResetCommandPool-device-parameter", 893 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 894 }, 895 { 896 "vuid": "VUID-vkResetCommandPool-commandPool-parameter", 897 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle" 898 }, 899 { 900 "vuid": "VUID-vkResetCommandPool-flags-parameter", 901 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values" 902 }, 903 { 904 "vuid": "VUID-vkResetCommandPool-commandPool-parent", 905 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 906 } 907 ] 908 }, 909 "vkDestroyCommandPool": { 910 "core": [ 911 { 912 "vuid": "VUID-vkDestroyCommandPool-commandPool-00041", 913 "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 914 }, 915 { 916 "vuid": "VUID-vkDestroyCommandPool-commandPool-00042", 917 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 918 }, 919 { 920 "vuid": "VUID-vkDestroyCommandPool-commandPool-00043", 921 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 922 }, 923 { 924 "vuid": "VUID-vkDestroyCommandPool-device-parameter", 925 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 926 }, 927 { 928 "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter", 929 "text": " If <code>commandPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle" 930 }, 931 { 932 "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter", 933 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 934 }, 935 { 936 "vuid": "VUID-vkDestroyCommandPool-commandPool-parent", 937 "text": " If <code>commandPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 938 } 939 ] 940 }, 941 "vkAllocateCommandBuffers": { 942 "core": [ 943 { 944 "vuid": "VUID-vkAllocateCommandBuffers-device-parameter", 945 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 946 }, 947 { 948 "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter", 949 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferAllocateInfo\">VkCommandBufferAllocateInfo</a> structure" 950 }, 951 { 952 "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter", 953 "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo->commandBufferCount</code> <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles" 954 }, 955 { 956 "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo::commandBufferCount-arraylength", 957 "text": " <code>pAllocateInfo->commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 958 } 959 ] 960 }, 961 "VkCommandBufferAllocateInfo": { 962 "core": [ 963 { 964 "vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044", 965 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 966 }, 967 { 968 "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType", 969 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>" 970 }, 971 { 972 "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext", 973 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 974 }, 975 { 976 "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter", 977 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle" 978 }, 979 { 980 "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter", 981 "text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value" 982 } 983 ] 984 }, 985 "vkResetCommandBuffer": { 986 "core": [ 987 { 988 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045", 989 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 990 }, 991 { 992 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046", 993 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated from a pool that was created with the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code>" 994 }, 995 { 996 "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter", 997 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 998 }, 999 { 1000 "vuid": "VUID-vkResetCommandBuffer-flags-parameter", 1001 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values" 1002 } 1003 ] 1004 }, 1005 "vkFreeCommandBuffers": { 1006 "core": [ 1007 { 1008 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047", 1009 "text": " All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 1010 }, 1011 { 1012 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048", 1013 "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>VkCommandBuffer</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <code>NULL</code>" 1014 }, 1015 { 1016 "vuid": "VUID-vkFreeCommandBuffers-device-parameter", 1017 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 1018 }, 1019 { 1020 "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter", 1021 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandPool\">VkCommandPool</a> handle" 1022 }, 1023 { 1024 "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength", 1025 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 1026 }, 1027 { 1028 "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent", 1029 "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 1030 }, 1031 { 1032 "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent", 1033 "text": " Each element of <code>pCommandBuffers</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>commandPool</code>" 1034 } 1035 ] 1036 }, 1037 "vkBeginCommandBuffer": { 1038 "core": [ 1039 { 1040 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049", 1041 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">recording or pending state</a>" 1042 }, 1043 { 1044 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050", 1045 "text": " If <code>commandBuffer</code> was allocated from a <a href=\"#VkCommandPool\">VkCommandPool</a> which did not have the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code> flag set, <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">initial state</a>" 1046 }, 1047 { 1048 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051", 1049 "text": " If <code>commandBuffer</code> is a secondary command buffer, the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBufferInheritanceInfo</code> structure" 1050 }, 1051 { 1052 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052", 1053 "text": " If <code>commandBuffer</code> is a secondary command buffer and either the <code>occlusionQueryEnable</code> member of the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> is <code>VK_FALSE</code>, or the precise occlusion queries feature is not enabled, the <code>queryFlags</code> member of the <code>pInheritanceInfo</code> member <code>pBeginInfo</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>" 1054 }, 1055 { 1056 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-02840", 1057 "text": " If <code>commandBuffer</code> is a primary command buffer, then <code>pBeginInfo->flags</code> <strong class=\"purple\">must</strong> not set both the <code>VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT</code> and the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flags" 1058 }, 1059 { 1060 "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter", 1061 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 1062 }, 1063 { 1064 "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter", 1065 "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a> structure" 1066 } 1067 ] 1068 }, 1069 "VkCommandBufferBeginInfo": { 1070 "core": [ 1071 { 1072 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00053", 1073 "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>renderPass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code>" 1074 }, 1075 { 1076 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00054", 1077 "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>subpass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid subpass index within the <code>renderPass</code> member of <code>pInheritanceInfo</code>" 1078 }, 1079 { 1080 "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055", 1081 "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be either <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, or a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code>" 1082 }, 1083 { 1084 "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType", 1085 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>" 1086 }, 1087 { 1088 "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext", 1089 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>" 1090 }, 1091 { 1092 "vuid": "VUID-VkCommandBufferBeginInfo-sType-unique", 1093 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 1094 }, 1095 { 1096 "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter", 1097 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values" 1098 } 1099 ] 1100 }, 1101 "VkCommandBufferInheritanceInfo": { 1102 "core": [ 1103 { 1104 "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056", 1105 "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>occlusionQueryEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 1106 }, 1107 { 1108 "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057", 1109 "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values" 1110 }, 1111 { 1112 "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-02788", 1113 "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 1114 }, 1115 { 1116 "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-02789", 1117 "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values" 1118 }, 1119 { 1120 "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058", 1121 "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be <code>0</code>" 1122 }, 1123 { 1124 "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType", 1125 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>" 1126 }, 1127 { 1128 "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext", 1129 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCommandBufferInheritanceConditionalRenderingInfoEXT\">VkCommandBufferInheritanceConditionalRenderingInfoEXT</a> or <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>" 1130 }, 1131 { 1132 "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-unique", 1133 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 1134 }, 1135 { 1136 "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent", 1137 "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 1138 } 1139 ] 1140 }, 1141 "VkCommandBufferInheritanceConditionalRenderingInfoEXT": { 1142 "(VK_EXT_conditional_rendering)": [ 1143 { 1144 "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977", 1145 "text": " If the <a href=\"#features-inheritedConditionalRendering\">inherited conditional rendering</a> feature is not enabled, <code>conditionalRenderingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 1146 }, 1147 { 1148 "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType", 1149 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>" 1150 } 1151 ] 1152 }, 1153 "VkCommandBufferInheritanceRenderPassTransformInfoQCOM": { 1154 "(VK_QCOM_render_pass_transform)": [ 1155 { 1156 "vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-transform-02864", 1157 "text": " <code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>" 1158 }, 1159 { 1160 "vuid": "VUID-VkCommandBufferInheritanceRenderPassTransformInfoQCOM-sType-sType", 1161 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM</code>" 1162 } 1163 ] 1164 }, 1165 "vkEndCommandBuffer": { 1166 "core": [ 1167 { 1168 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059", 1169 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 1170 }, 1171 { 1172 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060", 1173 "text": " If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance" 1174 }, 1175 { 1176 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061", 1177 "text": " All queries made <a href=\"#queries-operation-active\">active</a> during the recording of <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been made inactive" 1178 }, 1179 { 1180 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter", 1181 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 1182 } 1183 ], 1184 "(VK_EXT_conditional_rendering)": [ 1185 { 1186 "vuid": "VUID-vkEndCommandBuffer-None-01978", 1187 "text": " Conditional rendering <strong class=\"purple\">must</strong> not be <a href=\"#active-conditional-rendering\">active</a>" 1188 } 1189 ], 1190 "(VK_EXT_debug_utils)": [ 1191 { 1192 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815", 1193 "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdBeginDebugUtilsLabelEXT\">vkCmdBeginDebugUtilsLabelEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdEndDebugUtilsLabelEXT\">vkCmdEndDebugUtilsLabelEXT</a>" 1194 } 1195 ], 1196 "(VK_EXT_debug_marker)": [ 1197 { 1198 "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062", 1199 "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>" 1200 } 1201 ] 1202 }, 1203 "vkQueueSubmit": { 1204 "core": [ 1205 { 1206 "vuid": "VUID-vkQueueSubmit-fence-00063", 1207 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled" 1208 }, 1209 { 1210 "vuid": "VUID-vkQueueSubmit-fence-00064", 1211 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue" 1212 }, 1213 { 1214 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065", 1215 "text": " Any calls to <a href=\"#vkCmdSetEvent\">vkCmdSetEvent</a>, <a href=\"#vkCmdResetEvent\">vkCmdResetEvent</a> or <a href=\"#vkCmdWaitEvents\">vkCmdWaitEvents</a> that have been recorded into any of the command buffer elements of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code>, <strong class=\"purple\">must</strong> not reference any <a href=\"#VkEvent\">VkEvent</a> that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the <em>pending state</em>" 1216 }, 1217 { 1218 "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066", 1219 "text": " Any stage flag included in any element of the <code>pWaitDstStageMask</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be a pipeline stage supported by one of the capabilities of <code>queue</code>, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>" 1220 }, 1221 { 1222 "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067", 1223 "text": " Each element of the <code>pSignalSemaphores</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device" 1224 }, 1225 { 1226 "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068", 1227 "text": " When a semaphore wait operation referring to a binary semaphore defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore" 1228 }, 1229 { 1230 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070", 1231 "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>" 1232 }, 1233 { 1234 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071", 1235 "text": " If any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 1236 }, 1237 { 1238 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072", 1239 "text": " Any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>" 1240 }, 1241 { 1242 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073", 1243 "text": " If any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 1244 }, 1245 { 1246 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074", 1247 "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family <code>queue</code> belongs to" 1248 }, 1249 { 1250 "vuid": "VUID-vkQueueSubmit-pSubmits-02207", 1251 "text": " If any element of <code>pSubmits->pCommandBuffers</code> includes a <a href=\"#synchronization-queue-transfers-acquire\">Queue Family Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Transfer Release Operation</a> on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such <a href=\"#synchronization-queue-transfers-acquire\">acquire operations</a>, and which happens-before the acquire operation" 1252 }, 1253 { 1254 "vuid": "VUID-vkQueueSubmit-pSubmits-02808", 1255 "text": " Any resource created with <code>VK_SHARING_MODE_EXCLUSIVE</code> that is read by an operation specified by <code>pSubmits</code> <strong class=\"purple\">must</strong> not be owned by any queue family other than the one which <code>queue</code> belongs to, at the time it is executed" 1256 }, 1257 { 1258 "vuid": "VUID-vkQueueSubmit-queue-parameter", 1259 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 1260 }, 1261 { 1262 "vuid": "VUID-vkQueueSubmit-pSubmits-parameter", 1263 "text": " If <code>submitCount</code> is not <code>0</code>, <code>pSubmits</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>submitCount</code> valid <a href=\"#VkSubmitInfo\">VkSubmitInfo</a> structures" 1264 }, 1265 { 1266 "vuid": "VUID-vkQueueSubmit-fence-parameter", 1267 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 1268 }, 1269 { 1270 "vuid": "VUID-vkQueueSubmit-commonparent", 1271 "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 1272 } 1273 ], 1274 "!(VK_KHR_timeline_semaphore)": [ 1275 { 1276 "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069", 1277 "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution" 1278 } 1279 ], 1280 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 1281 { 1282 "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-03238", 1283 "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution" 1284 } 1285 ], 1286 "(VK_KHR_performance_query)": [ 1287 { 1288 "vuid": "VUID-vkQueueSubmit-pCommandBuffers-03220", 1289 "text": " If a command recorded into any element of <code>pCommandBuffers</code> was a <a href=\"#vkCmdBeginQuery\">vkCmdBeginQuery</a> whose <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held continuously on the <code>VkDevice</code> that <code>queue</code> was retrieved from, throughout recording of those command buffers" 1290 } 1291 ] 1292 }, 1293 "VkSubmitInfo": { 1294 "core": [ 1295 { 1296 "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075", 1297 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>" 1298 }, 1299 { 1300 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076", 1301 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 1302 }, 1303 { 1304 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077", 1305 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 1306 }, 1307 { 1308 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078", 1309 "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 1310 }, 1311 { 1312 "vuid": "VUID-VkSubmitInfo-sType-sType", 1313 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>" 1314 }, 1315 { 1316 "vuid": "VUID-VkSubmitInfo-pNext-pNext", 1317 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkD3D12FenceSubmitInfoKHR\">VkD3D12FenceSubmitInfoKHR</a>, <a href=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkPerformanceQuerySubmitInfoKHR\">VkPerformanceQuerySubmitInfoKHR</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>" 1318 }, 1319 { 1320 "vuid": "VUID-VkSubmitInfo-sType-unique", 1321 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 1322 }, 1323 { 1324 "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter", 1325 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles" 1326 }, 1327 { 1328 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter", 1329 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid combinations of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 1330 }, 1331 { 1332 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask", 1333 "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 1334 }, 1335 { 1336 "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter", 1337 "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles" 1338 }, 1339 { 1340 "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter", 1341 "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles" 1342 }, 1343 { 1344 "vuid": "VUID-VkSubmitInfo-commonparent", 1345 "text": " Each of the elements of <code>pCommandBuffers</code>, the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 1346 } 1347 ], 1348 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 1349 { 1350 "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03239", 1351 "text": " If any element of <code>pWaitSemaphores</code> or <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure" 1352 }, 1353 { 1354 "vuid": "VUID-VkSubmitInfo-pNext-03240", 1355 "text": " If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pWaitSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then its <code>waitSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>waitSemaphoreCount</code>" 1356 }, 1357 { 1358 "vuid": "VUID-VkSubmitInfo-pNext-03241", 1359 "text": " If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>, then its <code>signalSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>signalSemaphoreCount</code>" 1360 }, 1361 { 1362 "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03242", 1363 "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pSignalSemaphoreValues <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore when the <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> is executed" 1364 }, 1365 { 1366 "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-03243", 1367 "text": " For each element of <code>pWaitSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pWaitSemaphoreValues <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>" 1368 }, 1369 { 1370 "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-03244", 1371 "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pSignalSemaphoreValues <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>" 1372 } 1373 ], 1374 "(VK_NV_mesh_shader)": [ 1375 { 1376 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089", 1377 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 1378 }, 1379 { 1380 "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090", 1381 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 1382 } 1383 ], 1384 "(VK_VERSION_1_1)": [ 1385 { 1386 "vuid": "VUID-VkSubmitInfo-pNext-04120", 1387 "text": " If the <code>pNext</code> chain of this structure does not include a <code>VkProtectedSubmitInfo</code> structure with <code>protectedSubmit</code> set to <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer" 1388 }, 1389 { 1390 "vuid": "VUID-VkSubmitInfo-pNext-04148", 1391 "text": " If the <code>pNext</code> chain of this structure includes a <code>VkProtectedSubmitInfo</code> structure with <code>protectedSubmit</code> set to <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an protected command buffer" 1392 } 1393 ] 1394 }, 1395 "VkTimelineSemaphoreSubmitInfo": { 1396 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 1397 { 1398 "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-sType-sType", 1399 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO</code>" 1400 }, 1401 { 1402 "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pWaitSemaphoreValues-parameter", 1403 "text": " If <code>waitSemaphoreValueCount</code> is not <code>0</code>, and <code>pWaitSemaphoreValues</code> is not <code>NULL</code>, <code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreValueCount</code> <code>uint64_t</code> values" 1404 }, 1405 { 1406 "vuid": "VUID-VkTimelineSemaphoreSubmitInfo-pSignalSemaphoreValues-parameter", 1407 "text": " If <code>signalSemaphoreValueCount</code> is not <code>0</code>, and <code>pSignalSemaphoreValues</code> is not <code>NULL</code>, <code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreValueCount</code> <code>uint64_t</code> values" 1408 } 1409 ] 1410 }, 1411 "VkD3D12FenceSubmitInfoKHR": { 1412 "(VK_KHR_external_semaphore_win32)": [ 1413 { 1414 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079", 1415 "text": " <code>waitSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>waitSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure" 1416 }, 1417 { 1418 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080", 1419 "text": " <code>signalSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>signalSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure" 1420 }, 1421 { 1422 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType", 1423 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>" 1424 }, 1425 { 1426 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter", 1427 "text": " If <code>waitSemaphoreValuesCount</code> is not <code>0</code>, and <code>pWaitSemaphoreValues</code> is not <code>NULL</code>, <code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreValuesCount</code> <code>uint64_t</code> values" 1428 }, 1429 { 1430 "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter", 1431 "text": " If <code>signalSemaphoreValuesCount</code> is not <code>0</code>, and <code>pSignalSemaphoreValues</code> is not <code>NULL</code>, <code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreValuesCount</code> <code>uint64_t</code> values" 1432 } 1433 ] 1434 }, 1435 "VkWin32KeyedMutexAcquireReleaseInfoKHR": { 1436 "(VK_KHR_win32_keyed_mutex)": [ 1437 { 1438 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081", 1439 "text": " Each member of <code>pAcquireSyncs</code> and <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a device memory object imported by setting <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>::<code>handleType</code> to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>" 1440 }, 1441 { 1442 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType", 1443 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>" 1444 }, 1445 { 1446 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter", 1447 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles" 1448 }, 1449 { 1450 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter", 1451 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values" 1452 }, 1453 { 1454 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter", 1455 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values" 1456 }, 1457 { 1458 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter", 1459 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles" 1460 }, 1461 { 1462 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter", 1463 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values" 1464 }, 1465 { 1466 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent", 1467 "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 1468 } 1469 ] 1470 }, 1471 "VkWin32KeyedMutexAcquireReleaseInfoNV": { 1472 "(VK_NV_win32_keyed_mutex)": [ 1473 { 1474 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType", 1475 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>" 1476 }, 1477 { 1478 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter", 1479 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles" 1480 }, 1481 { 1482 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter", 1483 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values" 1484 }, 1485 { 1486 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter", 1487 "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeoutMilliseconds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values" 1488 }, 1489 { 1490 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter", 1491 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handles" 1492 }, 1493 { 1494 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter", 1495 "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values" 1496 }, 1497 { 1498 "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent", 1499 "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 1500 } 1501 ] 1502 }, 1503 "VkProtectedSubmitInfo": { 1504 "(VK_VERSION_1_1)": [ 1505 { 1506 "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816", 1507 "text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>" 1508 }, 1509 { 1510 "vuid": "VUID-VkProtectedSubmitInfo-sType-sType", 1511 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>" 1512 } 1513 ] 1514 }, 1515 "VkDeviceGroupSubmitInfo": { 1516 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 1517 { 1518 "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082", 1519 "text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>" 1520 }, 1521 { 1522 "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083", 1523 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>" 1524 }, 1525 { 1526 "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084", 1527 "text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>" 1528 }, 1529 { 1530 "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085", 1531 "text": " All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices" 1532 }, 1533 { 1534 "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086", 1535 "text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks" 1536 }, 1537 { 1538 "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType", 1539 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>" 1540 }, 1541 { 1542 "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter", 1543 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> <code>uint32_t</code> values" 1544 }, 1545 { 1546 "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter", 1547 "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>uint32_t</code> values" 1548 }, 1549 { 1550 "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter", 1551 "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> <code>uint32_t</code> values" 1552 } 1553 ] 1554 }, 1555 "VkPerformanceQuerySubmitInfoKHR": { 1556 "(VK_KHR_performance_query)": [ 1557 { 1558 "vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-counterPassIndex-03221", 1559 "text": " <code>counterPassIndex</code> <strong class=\"purple\">must</strong> be less than the number of counter passes required by any queries within the batch. The required number of counter passes for a performance query is obtained by calling <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>" 1560 }, 1561 { 1562 "vuid": "VUID-VkPerformanceQuerySubmitInfoKHR-sType-sType", 1563 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR</code>" 1564 } 1565 ] 1566 }, 1567 "vkCmdExecuteCommands": { 1568 "core": [ 1569 { 1570 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088", 1571 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>" 1572 }, 1573 { 1574 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089", 1575 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>" 1576 }, 1577 { 1578 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091", 1579 "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 1580 }, 1581 { 1582 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092", 1583 "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not have already been recorded to <code>commandBuffer</code>" 1584 }, 1585 { 1586 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093", 1587 "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not appear more than once in <code>pCommandBuffers</code>" 1588 }, 1589 { 1590 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094", 1591 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family as the <code>VkCommandPool</code> from which <code>commandBuffer</code> was allocated" 1592 }, 1593 { 1594 "vuid": "VUID-vkCmdExecuteCommands-contents-00095", 1595 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, that render pass instance <strong class=\"purple\">must</strong> have been begun with the <code>contents</code> parameter of <code>vkCmdBeginRenderPass</code> set to <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code>" 1596 }, 1597 { 1598 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096", 1599 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>" 1600 }, 1601 { 1602 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097", 1603 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>subpass</code> set to the index of the subpass which the given command buffer will be executed in" 1604 }, 1605 { 1606 "vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098", 1607 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, the render passes specified in the <code>pBeginInfo->pInheritanceInfo->renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the current render pass" 1608 }, 1609 { 1610 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099", 1611 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, and any element of <code>pCommandBuffers</code> was recorded with <a href=\"#VkCommandBufferInheritanceInfo\">VkCommandBufferInheritanceInfo</a>::<code>framebuffer</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>VkFramebuffer</code> <strong class=\"purple\">must</strong> match the <code>VkFramebuffer</code> used in the current render pass instance" 1612 }, 1613 { 1614 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100", 1615 "text": " If <code>vkCmdExecuteCommands</code> is not being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>" 1616 }, 1617 { 1618 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101", 1619 "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have any queries <a href=\"#queries-operation-active\">active</a>" 1620 }, 1621 { 1622 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102", 1623 "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>occlusionQueryEnable</code> set to <code>VK_TRUE</code>" 1624 }, 1625 { 1626 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103", 1627 "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>queryFlags</code> having all bits set that are set for the query" 1628 }, 1629 { 1630 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104", 1631 "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>pipelineStatistics</code> having all bits set that are set in the <code>VkQueryPool</code> the query uses" 1632 }, 1633 { 1634 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105", 1635 "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not begin any query types that are <a href=\"#queries-operation-active\">active</a> in <code>commandBuffer</code>" 1636 }, 1637 { 1638 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter", 1639 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 1640 }, 1641 { 1642 "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter", 1643 "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handles" 1644 }, 1645 { 1646 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording", 1647 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 1648 }, 1649 { 1650 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool", 1651 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 1652 }, 1653 { 1654 "vuid": "VUID-vkCmdExecuteCommands-bufferlevel", 1655 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 1656 }, 1657 { 1658 "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength", 1659 "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 1660 }, 1661 { 1662 "vuid": "VUID-vkCmdExecuteCommands-commonparent", 1663 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 1664 } 1665 ], 1666 "(VK_QCOM_render_pass_transform)": [ 1667 { 1668 "vuid": "VUID-vkCmdExecuteCommands-pNext-02865", 1669 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkCommandBufferBeginInfo\">VkCommandBufferBeginInfo</a>" 1670 }, 1671 { 1672 "vuid": "VUID-vkCmdExecuteCommands-pNext-02866", 1673 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>::<code>transform</code> identical to <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>::<code>transform</code>" 1674 }, 1675 { 1676 "vuid": "VUID-vkCmdExecuteCommands-pNext-02867", 1677 "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance that included <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a> in the <code>pNext</code> chain of <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <a href=\"#VkCommandBufferInheritanceRenderPassTransformInfoQCOM\">VkCommandBufferInheritanceRenderPassTransformInfoQCOM</a>::<code>renderArea</code> identical to <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderArea</code>" 1678 } 1679 ], 1680 "(VK_VERSION_1_1)": [ 1681 { 1682 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820", 1683 "text": " If <code>commandBuffer</code> is a protected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a protected command buffer" 1684 }, 1685 { 1686 "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821", 1687 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be an unprotected command buffer" 1688 } 1689 ], 1690 "(VK_EXT_transform_feedback)": [ 1691 { 1692 "vuid": "VUID-vkCmdExecuteCommands-None-02286", 1693 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 1694 } 1695 ] 1696 }, 1697 "VkDeviceGroupCommandBufferBeginInfo": { 1698 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 1699 { 1700 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106", 1701 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value" 1702 }, 1703 { 1704 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107", 1705 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 1706 }, 1707 { 1708 "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType", 1709 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>" 1710 } 1711 ] 1712 }, 1713 "vkCmdSetDeviceMask": { 1714 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 1715 { 1716 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108", 1717 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value" 1718 }, 1719 { 1720 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109", 1721 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 1722 }, 1723 { 1724 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110", 1725 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>::<code>deviceMask</code> value when the command buffer began recording" 1726 }, 1727 { 1728 "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111", 1729 "text": " If <code>vkCmdSetDeviceMask</code> is called inside a render pass instance, <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>::<code>deviceMask</code> value when the render pass instance began recording" 1730 }, 1731 { 1732 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter", 1733 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 1734 }, 1735 { 1736 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording", 1737 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 1738 }, 1739 { 1740 "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool", 1741 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations" 1742 } 1743 ] 1744 }, 1745 "vkCreateFence": { 1746 "core": [ 1747 { 1748 "vuid": "VUID-vkCreateFence-device-parameter", 1749 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 1750 }, 1751 { 1752 "vuid": "VUID-vkCreateFence-pCreateInfo-parameter", 1753 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a> structure" 1754 }, 1755 { 1756 "vuid": "VUID-vkCreateFence-pAllocator-parameter", 1757 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 1758 }, 1759 { 1760 "vuid": "VUID-vkCreateFence-pFence-parameter", 1761 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle" 1762 } 1763 ] 1764 }, 1765 "VkFenceCreateInfo": { 1766 "core": [ 1767 { 1768 "vuid": "VUID-VkFenceCreateInfo-sType-sType", 1769 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>" 1770 }, 1771 { 1772 "vuid": "VUID-VkFenceCreateInfo-pNext-pNext", 1773 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a> or <a href=\"#VkExportFenceWin32HandleInfoKHR\">VkExportFenceWin32HandleInfoKHR</a>" 1774 }, 1775 { 1776 "vuid": "VUID-VkFenceCreateInfo-sType-unique", 1777 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 1778 }, 1779 { 1780 "vuid": "VUID-VkFenceCreateInfo-flags-parameter", 1781 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values" 1782 } 1783 ] 1784 }, 1785 "VkExportFenceCreateInfo": { 1786 "(VK_VERSION_1_1,VK_KHR_external_fence)": [ 1787 { 1788 "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446", 1789 "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>" 1790 }, 1791 { 1792 "vuid": "VUID-VkExportFenceCreateInfo-sType-sType", 1793 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>" 1794 }, 1795 { 1796 "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter", 1797 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values" 1798 } 1799 ] 1800 }, 1801 "VkExportFenceWin32HandleInfoKHR": { 1802 "(VK_KHR_external_fence_win32)": [ 1803 { 1804 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447", 1805 "text": " If <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, a <code>VkExportFenceWin32HandleInfoKHR</code> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>" 1806 }, 1807 { 1808 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType", 1809 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>" 1810 }, 1811 { 1812 "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter", 1813 "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" 1814 } 1815 ] 1816 }, 1817 "vkGetFenceWin32HandleKHR": { 1818 "(VK_KHR_external_fence_win32)": [ 1819 { 1820 "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter", 1821 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 1822 }, 1823 { 1824 "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter", 1825 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetWin32HandleInfoKHR\">VkFenceGetWin32HandleInfoKHR</a> structure" 1826 }, 1827 { 1828 "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter", 1829 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" 1830 } 1831 ] 1832 }, 1833 "VkFenceGetWin32HandleInfoKHR": { 1834 "(VK_KHR_external_fence_win32)": [ 1835 { 1836 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448", 1837 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when the <code>fence</code>’s current payload was created" 1838 }, 1839 { 1840 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449", 1841 "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetFenceWin32HandleKHR\">vkGetFenceWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>fence</code> and <code>handleType</code>" 1842 }, 1843 { 1844 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450", 1845 "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-fences-importing\">Importing Fence Payloads</a> unless that imported payload’s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>" 1846 }, 1847 { 1848 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451", 1849 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-fences-signaling\">fence signal operation</a> pending execution" 1850 }, 1851 { 1852 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452", 1853 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle" 1854 }, 1855 { 1856 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType", 1857 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>" 1858 }, 1859 { 1860 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext", 1861 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1862 }, 1863 { 1864 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter", 1865 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 1866 }, 1867 { 1868 "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter", 1869 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 1870 } 1871 ] 1872 }, 1873 "vkGetFenceFdKHR": { 1874 "(VK_KHR_external_fence_fd)": [ 1875 { 1876 "vuid": "VUID-vkGetFenceFdKHR-device-parameter", 1877 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 1878 }, 1879 { 1880 "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter", 1881 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFenceGetFdInfoKHR\">VkFenceGetFdInfoKHR</a> structure" 1882 }, 1883 { 1884 "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter", 1885 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value" 1886 } 1887 ] 1888 }, 1889 "VkFenceGetFdInfoKHR": { 1890 "(VK_KHR_external_fence_fd)": [ 1891 { 1892 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453", 1893 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when <code>fence</code>’s current payload was created" 1894 }, 1895 { 1896 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454", 1897 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-fences-signaling\">fence signal operation</a> pending execution" 1898 }, 1899 { 1900 "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455", 1901 "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-fences-importing\">Importing Fence Payloads</a> unless that imported payload’s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>" 1902 }, 1903 { 1904 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456", 1905 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle" 1906 }, 1907 { 1908 "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType", 1909 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>" 1910 }, 1911 { 1912 "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext", 1913 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1914 }, 1915 { 1916 "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter", 1917 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 1918 }, 1919 { 1920 "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter", 1921 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 1922 } 1923 ] 1924 }, 1925 "vkDestroyFence": { 1926 "core": [ 1927 { 1928 "vuid": "VUID-vkDestroyFence-fence-01120", 1929 "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution" 1930 }, 1931 { 1932 "vuid": "VUID-vkDestroyFence-fence-01121", 1933 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 1934 }, 1935 { 1936 "vuid": "VUID-vkDestroyFence-fence-01122", 1937 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 1938 }, 1939 { 1940 "vuid": "VUID-vkDestroyFence-device-parameter", 1941 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 1942 }, 1943 { 1944 "vuid": "VUID-vkDestroyFence-fence-parameter", 1945 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 1946 }, 1947 { 1948 "vuid": "VUID-vkDestroyFence-pAllocator-parameter", 1949 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 1950 }, 1951 { 1952 "vuid": "VUID-vkDestroyFence-fence-parent", 1953 "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 1954 } 1955 ] 1956 }, 1957 "vkGetFenceStatus": { 1958 "core": [ 1959 { 1960 "vuid": "VUID-vkGetFenceStatus-device-parameter", 1961 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 1962 }, 1963 { 1964 "vuid": "VUID-vkGetFenceStatus-fence-parameter", 1965 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 1966 }, 1967 { 1968 "vuid": "VUID-vkGetFenceStatus-fence-parent", 1969 "text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 1970 } 1971 ] 1972 }, 1973 "vkResetFences": { 1974 "core": [ 1975 { 1976 "vuid": "VUID-vkResetFences-pFences-01123", 1977 "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> not be currently associated with any queue command that has not yet completed execution on that queue" 1978 }, 1979 { 1980 "vuid": "VUID-vkResetFences-device-parameter", 1981 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 1982 }, 1983 { 1984 "vuid": "VUID-vkResetFences-pFences-parameter", 1985 "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <a href=\"#VkFence\">VkFence</a> handles" 1986 }, 1987 { 1988 "vuid": "VUID-vkResetFences-fenceCount-arraylength", 1989 "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 1990 }, 1991 { 1992 "vuid": "VUID-vkResetFences-pFences-parent", 1993 "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 1994 } 1995 ] 1996 }, 1997 "vkWaitForFences": { 1998 "core": [ 1999 { 2000 "vuid": "VUID-vkWaitForFences-device-parameter", 2001 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2002 }, 2003 { 2004 "vuid": "VUID-vkWaitForFences-pFences-parameter", 2005 "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <a href=\"#VkFence\">VkFence</a> handles" 2006 }, 2007 { 2008 "vuid": "VUID-vkWaitForFences-fenceCount-arraylength", 2009 "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 2010 }, 2011 { 2012 "vuid": "VUID-vkWaitForFences-pFences-parent", 2013 "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2014 } 2015 ] 2016 }, 2017 "vkRegisterDeviceEventEXT": { 2018 "(VK_EXT_display_control)": [ 2019 { 2020 "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter", 2021 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2022 }, 2023 { 2024 "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter", 2025 "text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceEventInfoEXT\">VkDeviceEventInfoEXT</a> structure" 2026 }, 2027 { 2028 "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter", 2029 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 2030 }, 2031 { 2032 "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter", 2033 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle" 2034 } 2035 ] 2036 }, 2037 "VkDeviceEventInfoEXT": { 2038 "(VK_EXT_display_control)": [ 2039 { 2040 "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType", 2041 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>" 2042 }, 2043 { 2044 "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext", 2045 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2046 }, 2047 { 2048 "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter", 2049 "text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value" 2050 } 2051 ] 2052 }, 2053 "vkRegisterDisplayEventEXT": { 2054 "(VK_EXT_display_control)": [ 2055 { 2056 "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter", 2057 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2058 }, 2059 { 2060 "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter", 2061 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle" 2062 }, 2063 { 2064 "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter", 2065 "text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayEventInfoEXT\">VkDisplayEventInfoEXT</a> structure" 2066 }, 2067 { 2068 "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter", 2069 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 2070 }, 2071 { 2072 "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter", 2073 "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFence\">VkFence</a> handle" 2074 }, 2075 { 2076 "vuid": "VUID-vkRegisterDisplayEventEXT-commonparent", 2077 "text": " Both of <code>device</code>, and <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a>" 2078 } 2079 ] 2080 }, 2081 "VkDisplayEventInfoEXT": { 2082 "(VK_EXT_display_control)": [ 2083 { 2084 "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType", 2085 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>" 2086 }, 2087 { 2088 "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext", 2089 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2090 }, 2091 { 2092 "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter", 2093 "text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value" 2094 } 2095 ] 2096 }, 2097 "vkImportFenceWin32HandleKHR": { 2098 "(VK_KHR_external_fence_win32)": [ 2099 { 2100 "vuid": "VUID-vkImportFenceWin32HandleKHR-fence-04448", 2101 "text": " <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" 2102 }, 2103 { 2104 "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter", 2105 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2106 }, 2107 { 2108 "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter", 2109 "text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceWin32HandleInfoKHR\">VkImportFenceWin32HandleInfoKHR</a> structure" 2110 } 2111 ] 2112 }, 2113 "VkImportFenceWin32HandleInfoKHR": { 2114 "(VK_KHR_external_fence_win32)": [ 2115 { 2116 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457", 2117 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-win32\">Handle Types Supported by <code>VkImportFenceWin32HandleInfoKHR</code></a> table" 2118 }, 2119 { 2120 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459", 2121 "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2122 }, 2123 { 2124 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460", 2125 "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>" 2126 }, 2127 { 2128 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461", 2129 "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>" 2130 }, 2131 { 2132 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462", 2133 "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2134 }, 2135 { 2136 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539", 2137 "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>" 2138 }, 2139 { 2140 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540", 2141 "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>" 2142 }, 2143 { 2144 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType", 2145 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>" 2146 }, 2147 { 2148 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext", 2149 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2150 }, 2151 { 2152 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter", 2153 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 2154 }, 2155 { 2156 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter", 2157 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values" 2158 }, 2159 { 2160 "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter", 2161 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 2162 } 2163 ] 2164 }, 2165 "vkImportFenceFdKHR": { 2166 "(VK_KHR_external_fence_fd)": [ 2167 { 2168 "vuid": "VUID-vkImportFenceFdKHR-fence-01463", 2169 "text": " <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" 2170 }, 2171 { 2172 "vuid": "VUID-vkImportFenceFdKHR-device-parameter", 2173 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2174 }, 2175 { 2176 "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter", 2177 "text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportFenceFdInfoKHR\">VkImportFenceFdInfoKHR</a> structure" 2178 } 2179 ] 2180 }, 2181 "VkImportFenceFdInfoKHR": { 2182 "(VK_KHR_external_fence_fd)": [ 2183 { 2184 "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464", 2185 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-fd\">Handle Types Supported by <code>VkImportFenceFdInfoKHR</code></a> table" 2186 }, 2187 { 2188 "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541", 2189 "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>" 2190 }, 2191 { 2192 "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType", 2193 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>" 2194 }, 2195 { 2196 "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext", 2197 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2198 }, 2199 { 2200 "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter", 2201 "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 2202 }, 2203 { 2204 "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter", 2205 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values" 2206 }, 2207 { 2208 "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter", 2209 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 2210 } 2211 ] 2212 }, 2213 "vkCreateSemaphore": { 2214 "core": [ 2215 { 2216 "vuid": "VUID-vkCreateSemaphore-device-parameter", 2217 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2218 }, 2219 { 2220 "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter", 2221 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a> structure" 2222 }, 2223 { 2224 "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter", 2225 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 2226 }, 2227 { 2228 "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter", 2229 "text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 2230 } 2231 ] 2232 }, 2233 "VkSemaphoreCreateInfo": { 2234 "core": [ 2235 { 2236 "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType", 2237 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>" 2238 }, 2239 { 2240 "vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext", 2241 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>, <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>, or <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>" 2242 }, 2243 { 2244 "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique", 2245 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 2246 }, 2247 { 2248 "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask", 2249 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 2250 } 2251 ] 2252 }, 2253 "VkSemaphoreTypeCreateInfo": { 2254 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2255 { 2256 "vuid": "VUID-VkSemaphoreTypeCreateInfo-sType-sType", 2257 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO</code>" 2258 }, 2259 { 2260 "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-parameter", 2261 "text": " <code>semaphoreType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> value" 2262 }, 2263 { 2264 "vuid": "VUID-VkSemaphoreTypeCreateInfo-timelineSemaphore-03252", 2265 "text": " If the <a href=\"#features-timelineSemaphore\"><code>timelineSemaphore</code></a> feature is not enabled, <code>semaphoreType</code> <strong class=\"purple\">must</strong> not equal <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" 2266 }, 2267 { 2268 "vuid": "VUID-VkSemaphoreTypeCreateInfo-semaphoreType-03279", 2269 "text": " If <code>semaphoreType</code> is <code>VK_SEMAPHORE_TYPE_BINARY</code>, <code>initialValue</code> <strong class=\"purple\">must</strong> be zero" 2270 } 2271 ] 2272 }, 2273 "VkExportSemaphoreCreateInfo": { 2274 "(VK_VERSION_1_1,VK_KHR_external_semaphore)": [ 2275 { 2276 "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124", 2277 "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>" 2278 }, 2279 { 2280 "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType", 2281 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>" 2282 }, 2283 { 2284 "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter", 2285 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values" 2286 } 2287 ] 2288 }, 2289 "VkExportSemaphoreWin32HandleInfoKHR": { 2290 "(VK_KHR_external_semaphore_win32)": [ 2291 { 2292 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125", 2293 "text": " If <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>VkExportSemaphoreWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>" 2294 }, 2295 { 2296 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType", 2297 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>" 2298 }, 2299 { 2300 "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter", 2301 "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" 2302 } 2303 ] 2304 }, 2305 "vkGetSemaphoreWin32HandleKHR": { 2306 "(VK_KHR_external_semaphore_win32)": [ 2307 { 2308 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter", 2309 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2310 }, 2311 { 2312 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter", 2313 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetWin32HandleInfoKHR\">VkSemaphoreGetWin32HandleInfoKHR</a> structure" 2314 }, 2315 { 2316 "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter", 2317 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" 2318 } 2319 ] 2320 }, 2321 "VkSemaphoreGetWin32HandleInfoKHR": { 2322 "(VK_KHR_external_semaphore_win32)": [ 2323 { 2324 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126", 2325 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when the <code>semaphore</code>’s current payload was created" 2326 }, 2327 { 2328 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127", 2329 "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetSemaphoreWin32HandleKHR\">vkGetSemaphoreWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>semaphore</code> and <code>handleType</code>" 2330 }, 2331 { 2332 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128", 2333 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a> unless that imported payload’s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>" 2334 }, 2335 { 2336 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129", 2337 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a>, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>" 2338 }, 2339 { 2340 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130", 2341 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> pending execution" 2342 }, 2343 { 2344 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131", 2345 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle" 2346 }, 2347 { 2348 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType", 2349 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>" 2350 }, 2351 { 2352 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext", 2353 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2354 }, 2355 { 2356 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter", 2357 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 2358 }, 2359 { 2360 "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter", 2361 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 2362 } 2363 ] 2364 }, 2365 "vkGetSemaphoreFdKHR": { 2366 "(VK_KHR_external_semaphore_fd)": [ 2367 { 2368 "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter", 2369 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2370 }, 2371 { 2372 "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter", 2373 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreGetFdInfoKHR\">VkSemaphoreGetFdInfoKHR</a> structure" 2374 }, 2375 { 2376 "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter", 2377 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value" 2378 } 2379 ] 2380 }, 2381 "VkSemaphoreGetFdInfoKHR": { 2382 "(VK_KHR_external_semaphore_fd)": [ 2383 { 2384 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132", 2385 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when <code>semaphore</code>’s current payload was created" 2386 }, 2387 { 2388 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133", 2389 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a> unless that imported payload’s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>" 2390 }, 2391 { 2392 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134", 2393 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a>, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>" 2394 }, 2395 { 2396 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135", 2397 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> pending execution" 2398 }, 2399 { 2400 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136", 2401 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle" 2402 }, 2403 { 2404 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType", 2405 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>" 2406 }, 2407 { 2408 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext", 2409 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2410 }, 2411 { 2412 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter", 2413 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 2414 }, 2415 { 2416 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter", 2417 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 2418 } 2419 ], 2420 "(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2421 { 2422 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03253", 2423 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>" 2424 }, 2425 { 2426 "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-03254", 2427 "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> have an associated semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution" 2428 } 2429 ] 2430 }, 2431 "vkDestroySemaphore": { 2432 "core": [ 2433 { 2434 "vuid": "VUID-vkDestroySemaphore-semaphore-01137", 2435 "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution" 2436 }, 2437 { 2438 "vuid": "VUID-vkDestroySemaphore-semaphore-01138", 2439 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 2440 }, 2441 { 2442 "vuid": "VUID-vkDestroySemaphore-semaphore-01139", 2443 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2444 }, 2445 { 2446 "vuid": "VUID-vkDestroySemaphore-device-parameter", 2447 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2448 }, 2449 { 2450 "vuid": "VUID-vkDestroySemaphore-semaphore-parameter", 2451 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 2452 }, 2453 { 2454 "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter", 2455 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 2456 }, 2457 { 2458 "vuid": "VUID-vkDestroySemaphore-semaphore-parent", 2459 "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2460 } 2461 ] 2462 }, 2463 "vkGetSemaphoreCounterValue": { 2464 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2465 { 2466 "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-03255", 2467 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" 2468 }, 2469 { 2470 "vuid": "VUID-vkGetSemaphoreCounterValue-device-parameter", 2471 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2472 }, 2473 { 2474 "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parameter", 2475 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 2476 }, 2477 { 2478 "vuid": "VUID-vkGetSemaphoreCounterValue-pValue-parameter", 2479 "text": " <code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value" 2480 }, 2481 { 2482 "vuid": "VUID-vkGetSemaphoreCounterValue-semaphore-parent", 2483 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2484 } 2485 ] 2486 }, 2487 "vkWaitSemaphores": { 2488 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2489 { 2490 "vuid": "VUID-vkWaitSemaphores-device-parameter", 2491 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2492 }, 2493 { 2494 "vuid": "VUID-vkWaitSemaphores-pWaitInfo-parameter", 2495 "text": " <code>pWaitInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreWaitInfo\">VkSemaphoreWaitInfo</a> structure" 2496 } 2497 ] 2498 }, 2499 "VkSemaphoreWaitInfo": { 2500 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2501 { 2502 "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-03256", 2503 "text": " All of the elements of <code>pSemaphores</code> <strong class=\"purple\">must</strong> reference a semaphore that was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" 2504 }, 2505 { 2506 "vuid": "VUID-VkSemaphoreWaitInfo-sType-sType", 2507 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO</code>" 2508 }, 2509 { 2510 "vuid": "VUID-VkSemaphoreWaitInfo-pNext-pNext", 2511 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2512 }, 2513 { 2514 "vuid": "VUID-VkSemaphoreWaitInfo-flags-parameter", 2515 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreWaitFlagBits\">VkSemaphoreWaitFlagBits</a> values" 2516 }, 2517 { 2518 "vuid": "VUID-VkSemaphoreWaitInfo-pSemaphores-parameter", 2519 "text": " <code>pSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>semaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles" 2520 }, 2521 { 2522 "vuid": "VUID-VkSemaphoreWaitInfo-pValues-parameter", 2523 "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>semaphoreCount</code> <code>uint64_t</code> values" 2524 }, 2525 { 2526 "vuid": "VUID-VkSemaphoreWaitInfo-semaphoreCount-arraylength", 2527 "text": " <code>semaphoreCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 2528 } 2529 ] 2530 }, 2531 "vkSignalSemaphore": { 2532 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2533 { 2534 "vuid": "VUID-vkSignalSemaphore-device-parameter", 2535 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2536 }, 2537 { 2538 "vuid": "VUID-vkSignalSemaphore-pSignalInfo-parameter", 2539 "text": " <code>pSignalInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSemaphoreSignalInfo\">VkSemaphoreSignalInfo</a> structure" 2540 } 2541 ] 2542 }, 2543 "VkSemaphoreSignalInfo": { 2544 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2545 { 2546 "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-03257", 2547 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" 2548 }, 2549 { 2550 "vuid": "VUID-VkSemaphoreSignalInfo-value-03258", 2551 "text": " <code>value</code> <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore" 2552 }, 2553 { 2554 "vuid": "VUID-VkSemaphoreSignalInfo-value-03259", 2555 "text": " <code>value</code> <strong class=\"purple\">must</strong> be less than the value of any pending semaphore signal operations" 2556 }, 2557 { 2558 "vuid": "VUID-VkSemaphoreSignalInfo-value-03260", 2559 "text": " <code>value</code> <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or the value of any outstanding semaphore wait or signal operation on <code>semaphore</code> by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>" 2560 }, 2561 { 2562 "vuid": "VUID-VkSemaphoreSignalInfo-sType-sType", 2563 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO</code>" 2564 }, 2565 { 2566 "vuid": "VUID-VkSemaphoreSignalInfo-pNext-pNext", 2567 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2568 }, 2569 { 2570 "vuid": "VUID-VkSemaphoreSignalInfo-semaphore-parameter", 2571 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 2572 } 2573 ] 2574 }, 2575 "vkImportSemaphoreWin32HandleKHR": { 2576 "(VK_KHR_external_semaphore_win32)": [ 2577 { 2578 "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter", 2579 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2580 }, 2581 { 2582 "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter", 2583 "text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreWin32HandleInfoKHR\">VkImportSemaphoreWin32HandleInfoKHR</a> structure" 2584 } 2585 ] 2586 }, 2587 "VkImportSemaphoreWin32HandleInfoKHR": { 2588 "(VK_KHR_external_semaphore_win32)": [ 2589 { 2590 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140", 2591 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-win32\">Handle Types Supported by <code>VkImportSemaphoreWin32HandleInfoKHR</code></a> table" 2592 }, 2593 { 2594 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466", 2595 "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2596 }, 2597 { 2598 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467", 2599 "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>" 2600 }, 2601 { 2602 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468", 2603 "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>" 2604 }, 2605 { 2606 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469", 2607 "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2608 }, 2609 { 2610 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542", 2611 "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>" 2612 }, 2613 { 2614 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543", 2615 "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>" 2616 }, 2617 { 2618 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03261", 2619 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>::<code>flags</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>handle</code> or <code>name</code> was exported" 2620 }, 2621 { 2622 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType", 2623 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>" 2624 }, 2625 { 2626 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext", 2627 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2628 }, 2629 { 2630 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter", 2631 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 2632 }, 2633 { 2634 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter", 2635 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values" 2636 }, 2637 { 2638 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter", 2639 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 2640 } 2641 ], 2642 "(VK_KHR_external_semaphore_win32)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2643 { 2644 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-03262", 2645 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>handle</code> or <code>name</code> was exported" 2646 }, 2647 { 2648 "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-03322", 2649 "text": " If <code>flags</code> contains <code>VK_SEMAPHORE_IMPORT_TEMPORARY_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field of the semaphore from which <code>handle</code> or <code>name</code> was exported <strong class=\"purple\">must</strong> not be <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" 2650 } 2651 ] 2652 }, 2653 "vkImportSemaphoreFdKHR": { 2654 "(VK_KHR_external_semaphore_fd)": [ 2655 { 2656 "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142", 2657 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue" 2658 }, 2659 { 2660 "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter", 2661 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2662 }, 2663 { 2664 "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter", 2665 "text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImportSemaphoreFdInfoKHR\">VkImportSemaphoreFdInfoKHR</a> structure" 2666 } 2667 ] 2668 }, 2669 "VkImportSemaphoreFdInfoKHR": { 2670 "(VK_KHR_external_semaphore_fd)": [ 2671 { 2672 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143", 2673 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-fd\">Handle Types Supported by <code>VkImportSemaphoreFdInfoKHR</code></a> table" 2674 }, 2675 { 2676 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544", 2677 "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>" 2678 }, 2679 { 2680 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03263", 2681 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>::<code>flags</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>fd</code> was exported" 2682 }, 2683 { 2684 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType", 2685 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>" 2686 }, 2687 { 2688 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext", 2689 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2690 }, 2691 { 2692 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter", 2693 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 2694 }, 2695 { 2696 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter", 2697 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values" 2698 }, 2699 { 2700 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter", 2701 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 2702 } 2703 ], 2704 "(VK_KHR_external_semaphore_fd)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 2705 { 2706 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-03264", 2707 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field <strong class=\"purple\">must</strong> match that of the semaphore from which <code>fd</code> was exported" 2708 }, 2709 { 2710 "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-03323", 2711 "text": " If <code>flags</code> contains <code>VK_SEMAPHORE_IMPORT_TEMPORARY_BIT</code>, the <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>::<code>semaphoreType</code> field of the semaphore from which <code>fd</code> was exported <strong class=\"purple\">must</strong> not be <code>VK_SEMAPHORE_TYPE_TIMELINE</code>" 2712 } 2713 ] 2714 }, 2715 "vkCreateEvent": { 2716 "(VK_KHR_portability_subset)": [ 2717 { 2718 "vuid": "VUID-vkCreateEvent-events-04468", 2719 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>events</code> is <code>VK_FALSE</code>, then the implementation does not support <a href=\"#synchronization-events\">events</a>, and <a href=\"#vkCreateEvent\">vkCreateEvent</a> <strong class=\"purple\">must</strong> not be used." 2720 } 2721 ], 2722 "core": [ 2723 { 2724 "vuid": "VUID-vkCreateEvent-device-parameter", 2725 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2726 }, 2727 { 2728 "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter", 2729 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkEventCreateInfo\">VkEventCreateInfo</a> structure" 2730 }, 2731 { 2732 "vuid": "VUID-vkCreateEvent-pAllocator-parameter", 2733 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 2734 }, 2735 { 2736 "vuid": "VUID-vkCreateEvent-pEvent-parameter", 2737 "text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkEvent\">VkEvent</a> handle" 2738 } 2739 ] 2740 }, 2741 "VkEventCreateInfo": { 2742 "core": [ 2743 { 2744 "vuid": "VUID-VkEventCreateInfo-sType-sType", 2745 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>" 2746 }, 2747 { 2748 "vuid": "VUID-VkEventCreateInfo-pNext-pNext", 2749 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2750 }, 2751 { 2752 "vuid": "VUID-VkEventCreateInfo-flags-zerobitmask", 2753 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 2754 } 2755 ] 2756 }, 2757 "vkDestroyEvent": { 2758 "core": [ 2759 { 2760 "vuid": "VUID-vkDestroyEvent-event-01145", 2761 "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution" 2762 }, 2763 { 2764 "vuid": "VUID-vkDestroyEvent-event-01146", 2765 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 2766 }, 2767 { 2768 "vuid": "VUID-vkDestroyEvent-event-01147", 2769 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 2770 }, 2771 { 2772 "vuid": "VUID-vkDestroyEvent-device-parameter", 2773 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2774 }, 2775 { 2776 "vuid": "VUID-vkDestroyEvent-event-parameter", 2777 "text": " If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle" 2778 }, 2779 { 2780 "vuid": "VUID-vkDestroyEvent-pAllocator-parameter", 2781 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 2782 }, 2783 { 2784 "vuid": "VUID-vkDestroyEvent-event-parent", 2785 "text": " If <code>event</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2786 } 2787 ] 2788 }, 2789 "vkGetEventStatus": { 2790 "core": [ 2791 { 2792 "vuid": "VUID-vkGetEventStatus-device-parameter", 2793 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2794 }, 2795 { 2796 "vuid": "VUID-vkGetEventStatus-event-parameter", 2797 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle" 2798 }, 2799 { 2800 "vuid": "VUID-vkGetEventStatus-event-parent", 2801 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2802 } 2803 ] 2804 }, 2805 "vkSetEvent": { 2806 "core": [ 2807 { 2808 "vuid": "VUID-vkSetEvent-device-parameter", 2809 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2810 }, 2811 { 2812 "vuid": "VUID-vkSetEvent-event-parameter", 2813 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle" 2814 }, 2815 { 2816 "vuid": "VUID-vkSetEvent-event-parent", 2817 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2818 } 2819 ] 2820 }, 2821 "vkResetEvent": { 2822 "core": [ 2823 { 2824 "vuid": "VUID-vkResetEvent-event-01148", 2825 "text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing" 2826 }, 2827 { 2828 "vuid": "VUID-vkResetEvent-device-parameter", 2829 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 2830 }, 2831 { 2832 "vuid": "VUID-vkResetEvent-event-parameter", 2833 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle" 2834 }, 2835 { 2836 "vuid": "VUID-vkResetEvent-event-parent", 2837 "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 2838 } 2839 ] 2840 }, 2841 "vkCmdSetEvent": { 2842 "core": [ 2843 { 2844 "vuid": "VUID-vkCmdSetEvent-stageMask-04090", 2845 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 2846 }, 2847 { 2848 "vuid": "VUID-vkCmdSetEvent-stageMask-04091", 2849 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 2850 }, 2851 { 2852 "vuid": "VUID-vkCmdSetEvent-stageMask-4098", 2853 "text": " Any pipeline stage included in pname:stageMask <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>" 2854 }, 2855 { 2856 "vuid": "VUID-vkCmdSetEvent-stageMask-01149", 2857 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 2858 }, 2859 { 2860 "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter", 2861 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 2862 }, 2863 { 2864 "vuid": "VUID-vkCmdSetEvent-event-parameter", 2865 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle" 2866 }, 2867 { 2868 "vuid": "VUID-vkCmdSetEvent-stageMask-parameter", 2869 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 2870 }, 2871 { 2872 "vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask", 2873 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 2874 }, 2875 { 2876 "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording", 2877 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 2878 }, 2879 { 2880 "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool", 2881 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 2882 }, 2883 { 2884 "vuid": "VUID-vkCmdSetEvent-renderpass", 2885 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 2886 }, 2887 { 2888 "vuid": "VUID-vkCmdSetEvent-commonparent", 2889 "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 2890 } 2891 ], 2892 "(VK_EXT_conditional_rendering)": [ 2893 { 2894 "vuid": "VUID-vkCmdSetEvent-stageMask-04092", 2895 "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>" 2896 } 2897 ], 2898 "(VK_EXT_fragment_density_map)": [ 2899 { 2900 "vuid": "VUID-vkCmdSetEvent-stageMask-04093", 2901 "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>" 2902 } 2903 ], 2904 "(VK_EXT_transform_feedback)": [ 2905 { 2906 "vuid": "VUID-vkCmdSetEvent-stageMask-04094", 2907 "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>" 2908 } 2909 ], 2910 "(VK_NV_mesh_shader)": [ 2911 { 2912 "vuid": "VUID-vkCmdSetEvent-stageMask-04095", 2913 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 2914 }, 2915 { 2916 "vuid": "VUID-vkCmdSetEvent-stageMask-04096", 2917 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 2918 } 2919 ], 2920 "(VK_NV_shading_rate_image)": [ 2921 { 2922 "vuid": "VUID-vkCmdSetEvent-stageMask-04097", 2923 "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 2924 } 2925 ], 2926 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 2927 { 2928 "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152", 2929 "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device" 2930 } 2931 ] 2932 }, 2933 "vkCmdResetEvent": { 2934 "core": [ 2935 { 2936 "vuid": "VUID-vkCmdResetEvent-stageMask-04090", 2937 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 2938 }, 2939 { 2940 "vuid": "VUID-vkCmdResetEvent-stageMask-04091", 2941 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 2942 }, 2943 { 2944 "vuid": "VUID-vkCmdResetEvent-stageMask-4098", 2945 "text": " Any pipeline stage included in pname:stageMask <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>" 2946 }, 2947 { 2948 "vuid": "VUID-vkCmdResetEvent-stageMask-01153", 2949 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>" 2950 }, 2951 { 2952 "vuid": "VUID-vkCmdResetEvent-event-01156", 2953 "text": " When this command executes, <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing" 2954 }, 2955 { 2956 "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter", 2957 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 2958 }, 2959 { 2960 "vuid": "VUID-vkCmdResetEvent-event-parameter", 2961 "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkEvent\">VkEvent</a> handle" 2962 }, 2963 { 2964 "vuid": "VUID-vkCmdResetEvent-stageMask-parameter", 2965 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 2966 }, 2967 { 2968 "vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask", 2969 "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 2970 }, 2971 { 2972 "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording", 2973 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 2974 }, 2975 { 2976 "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool", 2977 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 2978 }, 2979 { 2980 "vuid": "VUID-vkCmdResetEvent-renderpass", 2981 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 2982 }, 2983 { 2984 "vuid": "VUID-vkCmdResetEvent-commonparent", 2985 "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 2986 } 2987 ], 2988 "(VK_EXT_conditional_rendering)": [ 2989 { 2990 "vuid": "VUID-vkCmdResetEvent-stageMask-04092", 2991 "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>" 2992 } 2993 ], 2994 "(VK_EXT_fragment_density_map)": [ 2995 { 2996 "vuid": "VUID-vkCmdResetEvent-stageMask-04093", 2997 "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>" 2998 } 2999 ], 3000 "(VK_EXT_transform_feedback)": [ 3001 { 3002 "vuid": "VUID-vkCmdResetEvent-stageMask-04094", 3003 "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>" 3004 } 3005 ], 3006 "(VK_NV_mesh_shader)": [ 3007 { 3008 "vuid": "VUID-vkCmdResetEvent-stageMask-04095", 3009 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3010 }, 3011 { 3012 "vuid": "VUID-vkCmdResetEvent-stageMask-04096", 3013 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3014 } 3015 ], 3016 "(VK_NV_shading_rate_image)": [ 3017 { 3018 "vuid": "VUID-vkCmdResetEvent-stageMask-04097", 3019 "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:stageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 3020 } 3021 ], 3022 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 3023 { 3024 "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157", 3025 "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device" 3026 } 3027 ] 3028 }, 3029 "vkCmdWaitEvents": { 3030 "core": [ 3031 { 3032 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04090", 3033 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 3034 }, 3035 { 3036 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04091", 3037 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 3038 }, 3039 { 3040 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-4098", 3041 "text": " Any pipeline stage included in pname:srcStageMask <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>" 3042 }, 3043 { 3044 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04090", 3045 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 3046 }, 3047 { 3048 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04091", 3049 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 3050 }, 3051 { 3052 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-4098", 3053 "text": " Any pipeline stage included in pname:dstStageMask <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>" 3054 }, 3055 { 3056 "vuid": "VUID-vkCmdWaitEvents-srcAccessMask-02815", 3057 "text": " The <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3058 }, 3059 { 3060 "vuid": "VUID-vkCmdWaitEvents-dstAccessMask-02816", 3061 "text": " The <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3062 }, 3063 { 3064 "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817", 3065 "text": " For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3066 }, 3067 { 3068 "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818", 3069 "text": " For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3070 }, 3071 { 3072 "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819", 3073 "text": " For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3074 }, 3075 { 3076 "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820", 3077 "text": " For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3078 }, 3079 { 3080 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158", 3081 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be the bitwise OR of the <code>stageMask</code> parameter used in previous calls to <code>vkCmdSetEvent</code> with any of the members of <code>pEvents</code> and <code>VK_PIPELINE_STAGE_HOST_BIT</code> if any of the members of <code>pEvents</code> was set using <code>vkSetEvent</code>" 3082 }, 3083 { 3084 "vuid": "VUID-vkCmdWaitEvents-pEvents-01163", 3085 "text": " If <code>pEvents</code> includes one or more events that will be signaled by <code>vkSetEvent</code> after <code>commandBuffer</code> has been submitted to a queue, then <code>vkCmdWaitEvents</code> <strong class=\"purple\">must</strong> not be called inside a render pass instance" 3086 }, 3087 { 3088 "vuid": "VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803", 3089 "text": " The <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal" 3090 }, 3091 { 3092 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter", 3093 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 3094 }, 3095 { 3096 "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter", 3097 "text": " <code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <a href=\"#VkEvent\">VkEvent</a> handles" 3098 }, 3099 { 3100 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter", 3101 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 3102 }, 3103 { 3104 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask", 3105 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3106 }, 3107 { 3108 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter", 3109 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 3110 }, 3111 { 3112 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask", 3113 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3114 }, 3115 { 3116 "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter", 3117 "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <a href=\"#VkMemoryBarrier\">VkMemoryBarrier</a> structures" 3118 }, 3119 { 3120 "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter", 3121 "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <a href=\"#VkBufferMemoryBarrier\">VkBufferMemoryBarrier</a> structures" 3122 }, 3123 { 3124 "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter", 3125 "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <a href=\"#VkImageMemoryBarrier\">VkImageMemoryBarrier</a> structures" 3126 }, 3127 { 3128 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording", 3129 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 3130 }, 3131 { 3132 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool", 3133 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 3134 }, 3135 { 3136 "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength", 3137 "text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 3138 }, 3139 { 3140 "vuid": "VUID-vkCmdWaitEvents-commonparent", 3141 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 3142 } 3143 ], 3144 "(VK_EXT_conditional_rendering)": [ 3145 { 3146 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04092", 3147 "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>" 3148 }, 3149 { 3150 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04092", 3151 "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>" 3152 } 3153 ], 3154 "(VK_EXT_fragment_density_map)": [ 3155 { 3156 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04093", 3157 "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>" 3158 }, 3159 { 3160 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04093", 3161 "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>" 3162 } 3163 ], 3164 "(VK_EXT_transform_feedback)": [ 3165 { 3166 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04094", 3167 "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>" 3168 }, 3169 { 3170 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04094", 3171 "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>" 3172 } 3173 ], 3174 "(VK_NV_mesh_shader)": [ 3175 { 3176 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04095", 3177 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3178 }, 3179 { 3180 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04096", 3181 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3182 }, 3183 { 3184 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04095", 3185 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3186 }, 3187 { 3188 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04096", 3189 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3190 } 3191 ], 3192 "(VK_NV_shading_rate_image)": [ 3193 { 3194 "vuid": "VUID-vkCmdWaitEvents-srcStageMask-04097", 3195 "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 3196 }, 3197 { 3198 "vuid": "VUID-vkCmdWaitEvents-dstStageMask-04097", 3199 "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 3200 } 3201 ], 3202 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 3203 { 3204 "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167", 3205 "text": " <code>commandBuffer</code>’s current device mask <strong class=\"purple\">must</strong> include exactly one physical device" 3206 } 3207 ] 3208 }, 3209 "vkCmdPipelineBarrier": { 3210 "core": [ 3211 { 3212 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04090", 3213 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 3214 }, 3215 { 3216 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04091", 3217 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 3218 }, 3219 { 3220 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-4098", 3221 "text": " Any pipeline stage included in pname:srcStageMask <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>" 3222 }, 3223 { 3224 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04090", 3225 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 3226 }, 3227 { 3228 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04091", 3229 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 3230 }, 3231 { 3232 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-4098", 3233 "text": " Any pipeline stage included in pname:dstStageMask <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>" 3234 }, 3235 { 3236 "vuid": "VUID-vkCmdPipelineBarrier-srcAccessMask-02815", 3237 "text": " The <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3238 }, 3239 { 3240 "vuid": "VUID-vkCmdPipelineBarrier-dstAccessMask-02816", 3241 "text": " The <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> only include access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3242 }, 3243 { 3244 "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817", 3245 "text": " For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3246 }, 3247 { 3248 "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818", 3249 "text": " For any element of <code>pBufferMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3250 }, 3251 { 3252 "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819", 3253 "text": " For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>srcQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>srcAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3254 }, 3255 { 3256 "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820", 3257 "text": " For any element of <code>pImageMemoryBarriers</code>, if its <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members are equal, or if its <code>dstQueueFamilyIndex</code> is the queue family index that was used to create the command pool that <code>commandBuffer</code> was allocated from, then its <code>dstAccessMask</code> member <strong class=\"purple\">must</strong> only contain access flags that are supported by one or more of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 3258 }, 3259 { 3260 "vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285", 3261 "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass <strong class=\"purple\">must</strong> have been created with at least one <a href=\"#VkSubpassDependency\">VkSubpassDependency</a> instance in <code>VkRenderPassCreateInfo</code>::<code>pDependencies</code> that expresses a dependency from the current subpass to itself, with <a href=\"#synchronization-dependencies-scopes\">synchronization scopes</a> and <a href=\"#synchronization-dependencies-access-scopes\">access scopes</a> that are all supersets of the scopes defined in this command" 3262 }, 3263 { 3264 "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178", 3265 "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, it <strong class=\"purple\">must</strong> not include any buffer memory barriers" 3266 }, 3267 { 3268 "vuid": "VUID-vkCmdPipelineBarrier-image-04073", 3269 "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the <code>image</code> member of any image memory barrier included in this command <strong class=\"purple\">must</strong> be an attachment used in the current subpass both as an input attachment, and as either a color or depth/stencil attachment" 3270 }, 3271 { 3272 "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181", 3273 "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any image memory barrier included in this command <strong class=\"purple\">must</strong> be equal" 3274 }, 3275 { 3276 "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182", 3277 "text": " If fname:vkCmdPipelineBarrier is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any image memory barrier included in this command <strong class=\"purple\">must</strong> be equal" 3278 }, 3279 { 3280 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter", 3281 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 3282 }, 3283 { 3284 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter", 3285 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 3286 }, 3287 { 3288 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask", 3289 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3290 }, 3291 { 3292 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter", 3293 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 3294 }, 3295 { 3296 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask", 3297 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 3298 }, 3299 { 3300 "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter", 3301 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values" 3302 }, 3303 { 3304 "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter", 3305 "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <a href=\"#VkMemoryBarrier\">VkMemoryBarrier</a> structures" 3306 }, 3307 { 3308 "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter", 3309 "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <a href=\"#VkBufferMemoryBarrier\">VkBufferMemoryBarrier</a> structures" 3310 }, 3311 { 3312 "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter", 3313 "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <a href=\"#VkImageMemoryBarrier\">VkImageMemoryBarrier</a> structures" 3314 }, 3315 { 3316 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording", 3317 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 3318 }, 3319 { 3320 "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool", 3321 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 3322 } 3323 ], 3324 "(VK_EXT_conditional_rendering)": [ 3325 { 3326 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04092", 3327 "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>" 3328 }, 3329 { 3330 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04092", 3331 "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>" 3332 } 3333 ], 3334 "(VK_EXT_fragment_density_map)": [ 3335 { 3336 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04093", 3337 "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>" 3338 }, 3339 { 3340 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04093", 3341 "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>" 3342 } 3343 ], 3344 "(VK_EXT_transform_feedback)": [ 3345 { 3346 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04094", 3347 "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>" 3348 }, 3349 { 3350 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04094", 3351 "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>" 3352 } 3353 ], 3354 "(VK_NV_mesh_shader)": [ 3355 { 3356 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04095", 3357 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3358 }, 3359 { 3360 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04096", 3361 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3362 }, 3363 { 3364 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04095", 3365 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 3366 }, 3367 { 3368 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04096", 3369 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 3370 } 3371 ], 3372 "(VK_NV_shading_rate_image)": [ 3373 { 3374 "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-04097", 3375 "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:srcStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 3376 }, 3377 { 3378 "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-04097", 3379 "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, pname:dstStageMask <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 3380 } 3381 ], 3382 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 3383 { 3384 "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186", 3385 "text": " If fname:vkCmdPipelineBarrier is called outside of a render pass instance, <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code> <strong class=\"purple\">must</strong> not be included in the dependency flags" 3386 } 3387 ] 3388 }, 3389 "VkMemoryBarrier": { 3390 "core": [ 3391 { 3392 "vuid": "VUID-VkMemoryBarrier-sType-sType", 3393 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>" 3394 }, 3395 { 3396 "vuid": "VUID-VkMemoryBarrier-pNext-pNext", 3397 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 3398 }, 3399 { 3400 "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter", 3401 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 3402 }, 3403 { 3404 "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter", 3405 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 3406 } 3407 ] 3408 }, 3409 "VkBufferMemoryBarrier": { 3410 "core": [ 3411 { 3412 "vuid": "VUID-VkBufferMemoryBarrier-offset-01187", 3413 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 3414 }, 3415 { 3416 "vuid": "VUID-VkBufferMemoryBarrier-size-01188", 3417 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 3418 }, 3419 { 3420 "vuid": "VUID-VkBufferMemoryBarrier-size-01189", 3421 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to than the size of <code>buffer</code> minus <code>offset</code>" 3422 }, 3423 { 3424 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931", 3425 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 3426 }, 3427 { 3428 "vuid": "VUID-VkBufferMemoryBarrier-sType-sType", 3429 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>" 3430 }, 3431 { 3432 "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext", 3433 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 3434 }, 3435 { 3436 "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter", 3437 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 3438 } 3439 ], 3440 "!(VK_VERSION_1_1,VK_KHR_external_memory)": [ 3441 { 3442 "vuid": "VUID-VkBufferMemoryBarrier-buffer-04086", 3443 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be valid queue families" 3444 }, 3445 { 3446 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01190", 3447 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>" 3448 } 3449 ], 3450 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 3451 { 3452 "vuid": "VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087", 3453 "text": " If <code>srcQueueFamilyIndex</code> is not equal to <code>dstQueueFamilyIndex</code>, at least one <strong class=\"purple\">must</strong> not be a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>" 3454 }, 3455 { 3456 "vuid": "VUID-VkBufferMemoryBarrier-buffer-04088", 3457 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is a special queue family values reserved for external memory transfers, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" 3458 }, 3459 { 3460 "vuid": "VUID-VkBufferMemoryBarrier-buffer-04089", 3461 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>" 3462 }, 3463 { 3464 "vuid": "VUID-VkBufferMemoryBarrier-buffer-01191", 3465 "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" 3466 } 3467 ] 3468 }, 3469 "VkImageMemoryBarrier": { 3470 "core": [ 3471 { 3472 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486", 3473 "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 3474 }, 3475 { 3476 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724", 3477 "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> + <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 3478 }, 3479 { 3480 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488", 3481 "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 3482 }, 3483 { 3484 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725", 3485 "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 3486 }, 3487 { 3488 "vuid": "VUID-VkImageMemoryBarrier-image-01932", 3489 "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 3490 }, 3491 { 3492 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208", 3493 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> set" 3494 }, 3495 { 3496 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209", 3497 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 3498 }, 3499 { 3500 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210", 3501 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 3502 }, 3503 { 3504 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211", 3505 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set" 3506 }, 3507 { 3508 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212", 3509 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> set" 3510 }, 3511 { 3512 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213", 3513 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> set" 3514 }, 3515 { 3516 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197", 3517 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier" 3518 }, 3519 { 3520 "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198", 3521 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 3522 }, 3523 { 3524 "vuid": "VUID-VkImageMemoryBarrier-sType-sType", 3525 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>" 3526 }, 3527 { 3528 "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext", 3529 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>" 3530 }, 3531 { 3532 "vuid": "VUID-VkImageMemoryBarrier-sType-unique", 3533 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 3534 }, 3535 { 3536 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter", 3537 "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3538 }, 3539 { 3540 "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter", 3541 "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3542 }, 3543 { 3544 "vuid": "VUID-VkImageMemoryBarrier-image-parameter", 3545 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 3546 }, 3547 { 3548 "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter", 3549 "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure" 3550 } 3551 ], 3552 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 3553 { 3554 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658", 3555 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 3556 }, 3557 { 3558 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659", 3559 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 3560 } 3561 ], 3562 "(VK_VERSION_1_2,VK_EXT_separate_depth_stencil_layouts)": [ 3563 { 3564 "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065", 3565 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set" 3566 }, 3567 { 3568 "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066", 3569 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 3570 }, 3571 { 3572 "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067", 3573 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with at least one of <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set" 3574 }, 3575 { 3576 "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068", 3577 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set" 3578 } 3579 ], 3580 "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [ 3581 { 3582 "vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088", 3583 "text": " If <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> define a <a href=\"#synchronization-queue-transfers\">queue family ownership transfer</a> or <code>oldLayout</code> and <code>newLayout</code> define a <a href=\"#synchronization-image-layout-transitions\">image layout transition</a>, and <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code> set" 3584 } 3585 ], 3586 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 3587 { 3588 "vuid": "VUID-VkImageMemoryBarrier-image-02902", 3589 "text": " If <code>image</code> has a color format, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 3590 } 3591 ], 3592 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 3593 { 3594 "vuid": "VUID-VkImageMemoryBarrier-image-01671", 3595 "text": " If <code>image</code> has a single-plane color format or is not <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 3596 }, 3597 { 3598 "vuid": "VUID-VkImageMemoryBarrier-image-01672", 3599 "text": " If <code>image</code> has a multi-planar format and the image is <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either at least one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>; or <strong class=\"purple\">must</strong> include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 3600 }, 3601 { 3602 "vuid": "VUID-VkImageMemoryBarrier-image-01673", 3603 "text": " If <code>image</code> has a multi-planar format with only two planes, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 3604 } 3605 ], 3606 "!(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 3607 { 3608 "vuid": "VUID-VkImageMemoryBarrier-image-01207", 3609 "text": " If <code>image</code> has a depth/stencil format with both depth and stencil components, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 3610 } 3611 ], 3612 "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 3613 { 3614 "vuid": "VUID-VkImageMemoryBarrier-image-03319", 3615 "text": " If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\">separateDepthStencilLayouts</a> feature is enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either or both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 3616 }, 3617 { 3618 "vuid": "VUID-VkImageMemoryBarrier-image-03320", 3619 "text": " If <code>image</code> has a depth/stencil format with both depth and stencil and the <a href=\"#features-separateDepthStencilLayouts\">separateDepthStencilLayouts</a> feature is not enabled, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 3620 } 3621 ], 3622 "!(VK_VERSION_1_1,VK_KHR_external_memory)": [ 3623 { 3624 "vuid": "VUID-VkImageMemoryBarrier-image-04069", 3625 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be valid queue families" 3626 }, 3627 { 3628 "vuid": "VUID-VkImageMemoryBarrier-image-01199", 3629 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>" 3630 } 3631 ], 3632 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 3633 { 3634 "vuid": "VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070", 3635 "text": " If <code>srcQueueFamilyIndex</code> is not equal to <code>dstQueueFamilyIndex</code>, at least one <strong class=\"purple\">must</strong> not be a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>" 3636 }, 3637 { 3638 "vuid": "VUID-VkImageMemoryBarrier-image-04071", 3639 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is a special queue family values reserved for external memory transfers, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" 3640 }, 3641 { 3642 "vuid": "VUID-VkImageMemoryBarrier-image-04072", 3643 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not equal, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>" 3644 }, 3645 { 3646 "vuid": "VUID-VkImageMemoryBarrier-image-01381", 3647 "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>" 3648 } 3649 ] 3650 }, 3651 "vkQueueWaitIdle": { 3652 "core": [ 3653 { 3654 "vuid": "VUID-vkQueueWaitIdle-queue-parameter", 3655 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 3656 } 3657 ] 3658 }, 3659 "vkDeviceWaitIdle": { 3660 "core": [ 3661 { 3662 "vuid": "VUID-vkDeviceWaitIdle-device-parameter", 3663 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 3664 } 3665 ] 3666 }, 3667 "vkGetCalibratedTimestampsEXT": { 3668 "(VK_EXT_calibrated_timestamps)": [ 3669 { 3670 "vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter", 3671 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 3672 }, 3673 { 3674 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter", 3675 "text": " <code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> valid <a href=\"#VkCalibratedTimestampInfoEXT\">VkCalibratedTimestampInfoEXT</a> structures" 3676 }, 3677 { 3678 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter", 3679 "text": " <code>pTimestamps</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> <code>uint64_t</code> values" 3680 }, 3681 { 3682 "vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter", 3683 "text": " <code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value" 3684 }, 3685 { 3686 "vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength", 3687 "text": " <code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 3688 } 3689 ] 3690 }, 3691 "VkCalibratedTimestampInfoEXT": { 3692 "(VK_EXT_calibrated_timestamps)": [ 3693 { 3694 "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354", 3695 "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values returned by <a href=\"#vkGetPhysicalDeviceCalibrateableTimeDomainsEXT\">vkGetPhysicalDeviceCalibrateableTimeDomainsEXT</a>" 3696 }, 3697 { 3698 "vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType", 3699 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT</code>" 3700 }, 3701 { 3702 "vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext", 3703 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 3704 }, 3705 { 3706 "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter", 3707 "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> value" 3708 } 3709 ] 3710 }, 3711 "vkCreateRenderPass": { 3712 "core": [ 3713 { 3714 "vuid": "VUID-vkCreateRenderPass-device-parameter", 3715 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 3716 }, 3717 { 3718 "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter", 3719 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> structure" 3720 }, 3721 { 3722 "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter", 3723 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 3724 }, 3725 { 3726 "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter", 3727 "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPass\">VkRenderPass</a> handle" 3728 } 3729 ] 3730 }, 3731 "VkRenderPassCreateInfo": { 3732 "core": [ 3733 { 3734 "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834", 3735 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>" 3736 }, 3737 { 3738 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836", 3739 "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>" 3740 }, 3741 { 3742 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511", 3743 "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>" 3744 }, 3745 { 3746 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837", 3747 "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass" 3748 }, 3749 { 3750 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838", 3751 "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the destination subpass" 3752 }, 3753 { 3754 "vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517", 3755 "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 3756 }, 3757 { 3758 "vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518", 3759 "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 3760 }, 3761 { 3762 "vuid": "VUID-VkRenderPassCreateInfo-sType-sType", 3763 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>" 3764 }, 3765 { 3766 "vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext", 3767 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>, <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, or <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>" 3768 }, 3769 { 3770 "vuid": "VUID-VkRenderPassCreateInfo-sType-unique", 3771 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 3772 }, 3773 { 3774 "vuid": "VUID-VkRenderPassCreateInfo-flags-parameter", 3775 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderPassCreateFlagBits\">VkRenderPassCreateFlagBits</a> values" 3776 }, 3777 { 3778 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter", 3779 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a> structures" 3780 }, 3781 { 3782 "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter", 3783 "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <a href=\"#VkSubpassDescription\">VkSubpassDescription</a> structures" 3784 }, 3785 { 3786 "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter", 3787 "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <a href=\"#VkSubpassDependency\">VkSubpassDependency</a> structures" 3788 }, 3789 { 3790 "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength", 3791 "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 3792 } 3793 ], 3794 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 3795 { 3796 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566", 3797 "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 3798 }, 3799 { 3800 "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567", 3801 "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>" 3802 }, 3803 { 3804 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926", 3805 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, the <code>subpass</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 3806 }, 3807 { 3808 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927", 3809 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, the <code>inputAttachmentIndex</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than the value of <code>inputAttachmentCount</code> in the member of <code>pSubpasses</code> identified by its <code>subpass</code> member" 3810 }, 3811 { 3812 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01963", 3813 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> structure, for any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> where the <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of the corresponding element of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>::<code>pAspectReferences</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> at <code>attachment</code>" 3814 } 3815 ], 3816 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 3817 { 3818 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928", 3819 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, and its <code>subpassCount</code> member is not zero, that member <strong class=\"purple\">must</strong> be equal to the value of <code>subpassCount</code>" 3820 }, 3821 { 3822 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929", 3823 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>" 3824 }, 3825 { 3826 "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930", 3827 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, for each non-zero element of <code>pViewOffsets</code>, the <code>srcSubpass</code> and <code>dstSubpass</code> members of <code>pDependencies</code> at the same index <strong class=\"purple\">must</strong> not be equal" 3828 }, 3829 { 3830 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02512", 3831 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, for any element of <code>pDependencies</code> with a <code>dependencyFlags</code> member that does not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, the corresponding element of the <code>pViewOffsets</code> member of that <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> instance <strong class=\"purple\">must</strong> be <code>0</code>" 3832 }, 3833 { 3834 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02513", 3835 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, elements of its <code>pViewMasks</code> member <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>" 3836 }, 3837 { 3838 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02514", 3839 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, and each element of its <code>pViewMasks</code> member is <code>0</code>, the <code>dependencyFlags</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 3840 }, 3841 { 3842 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515", 3843 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, and each element of its <code>pViewMasks</code> member is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 3844 }, 3845 { 3846 "vuid": "VUID-VkRenderPassCreateInfo-pNext-02516", 3847 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> structure, each element of its <code>pViewMask</code> member <strong class=\"purple\">must</strong> not have a bit set at an index greater than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>" 3848 } 3849 ] 3850 }, 3851 "VkRenderPassMultiviewCreateInfo": { 3852 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 3853 { 3854 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841", 3855 "text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>" 3856 }, 3857 { 3858 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType", 3859 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>" 3860 }, 3861 { 3862 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter", 3863 "text": " If <code>subpassCount</code> is not <code>0</code>, <code>pViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> <code>uint32_t</code> values" 3864 }, 3865 { 3866 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter", 3867 "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pViewOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> <code>int32_t</code> values" 3868 }, 3869 { 3870 "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter", 3871 "text": " If <code>correlationMaskCount</code> is not <code>0</code>, <code>pCorrelationMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlationMaskCount</code> <code>uint32_t</code> values" 3872 } 3873 ] 3874 }, 3875 "VkRenderPassFragmentDensityMapCreateInfoEXT": { 3876 "(VK_EXT_fragment_density_map)": [ 3877 { 3878 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547", 3879 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be less than <code>VkRenderPassCreateInfo</code>::<code>attachmentCount</code>" 3880 }, 3881 { 3882 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548", 3883 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> not be an element of <code>VkSubpassDescription</code>::<code>pInputAttachments</code>, <code>VkSubpassDescription</code>::<code>pColorAttachments</code>, <code>VkSubpassDescription</code>::<code>pResolveAttachments</code>, <code>VkSubpassDescription</code>::<code>pDepthStencilAttachment</code>, or <code>VkSubpassDescription</code>::<code>pPreserveAttachments</code> for any subpass" 3884 }, 3885 { 3886 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549", 3887 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> be equal to <code>VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT</code>, or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 3888 }, 3889 { 3890 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550", 3891 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_LOAD</code> or <code>VK_ATTACHMENT_LOAD_OP_DONT_CARE</code>" 3892 }, 3893 { 3894 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551", 3895 "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>storeOp</code> equal to <code>VK_ATTACHMENT_STORE_OP_DONT_CARE</code>" 3896 }, 3897 { 3898 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType", 3899 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>" 3900 }, 3901 { 3902 "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter", 3903 "text": " <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structure" 3904 } 3905 ] 3906 }, 3907 "VkAttachmentDescription": { 3908 "core": [ 3909 { 3910 "vuid": "VUID-VkAttachmentDescription-finalLayout-00843", 3911 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 3912 }, 3913 { 3914 "vuid": "VUID-VkAttachmentDescription-format-03280", 3915 "text": " If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 3916 }, 3917 { 3918 "vuid": "VUID-VkAttachmentDescription-format-03281", 3919 "text": " If <code>format</code> is a depth/stencil format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>" 3920 }, 3921 { 3922 "vuid": "VUID-VkAttachmentDescription-format-03282", 3923 "text": " If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 3924 }, 3925 { 3926 "vuid": "VUID-VkAttachmentDescription-format-03283", 3927 "text": " If <code>format</code> is a depth/stencil format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>" 3928 }, 3929 { 3930 "vuid": "VUID-VkAttachmentDescription-flags-parameter", 3931 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values" 3932 }, 3933 { 3934 "vuid": "VUID-VkAttachmentDescription-format-parameter", 3935 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 3936 }, 3937 { 3938 "vuid": "VUID-VkAttachmentDescription-samples-parameter", 3939 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 3940 }, 3941 { 3942 "vuid": "VUID-VkAttachmentDescription-loadOp-parameter", 3943 "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" 3944 }, 3945 { 3946 "vuid": "VUID-VkAttachmentDescription-storeOp-parameter", 3947 "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" 3948 }, 3949 { 3950 "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter", 3951 "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" 3952 }, 3953 { 3954 "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter", 3955 "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" 3956 }, 3957 { 3958 "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter", 3959 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3960 }, 3961 { 3962 "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter", 3963 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 3964 } 3965 ], 3966 "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 3967 { 3968 "vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03284", 3969 "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 3970 }, 3971 { 3972 "vuid": "VUID-VkAttachmentDescription-separateDepthStencilLayouts-03285", 3973 "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 3974 }, 3975 { 3976 "vuid": "VUID-VkAttachmentDescription-format-03286", 3977 "text": " If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 3978 }, 3979 { 3980 "vuid": "VUID-VkAttachmentDescription-format-03287", 3981 "text": " If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 3982 }, 3983 { 3984 "vuid": "VUID-VkAttachmentDescription-format-03288", 3985 "text": " If <code>format</code> is a depth/stencil format which includes both depth and stencil aspects, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 3986 }, 3987 { 3988 "vuid": "VUID-VkAttachmentDescription-format-03289", 3989 "text": " If <code>format</code> is a depth/stencil format which includes both depth and stencil aspects, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 3990 }, 3991 { 3992 "vuid": "VUID-VkAttachmentDescription-format-03290", 3993 "text": " If <code>format</code> is a depth/stencil format which includes only the depth aspect, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 3994 }, 3995 { 3996 "vuid": "VUID-VkAttachmentDescription-format-03291", 3997 "text": " If <code>format</code> is a depth/stencil format which includes only the depth aspect, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 3998 }, 3999 { 4000 "vuid": "VUID-VkAttachmentDescription-format-03292", 4001 "text": " If <code>format</code> is a depth/stencil format which includes only the stencil aspect, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>" 4002 }, 4003 { 4004 "vuid": "VUID-VkAttachmentDescription-format-03293", 4005 "text": " If <code>format</code> is a depth/stencil format which includes only the stencil aspect, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>" 4006 } 4007 ] 4008 }, 4009 "VkRenderPassInputAttachmentAspectCreateInfo": { 4010 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 4011 { 4012 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType", 4013 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>" 4014 }, 4015 { 4016 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter", 4017 "text": " <code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <a href=\"#VkInputAttachmentAspectReference\">VkInputAttachmentAspectReference</a> structures" 4018 }, 4019 { 4020 "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength", 4021 "text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 4022 } 4023 ] 4024 }, 4025 "VkInputAttachmentAspectReference": { 4026 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 4027 { 4028 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964", 4029 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" 4030 }, 4031 { 4032 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter", 4033 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 4034 }, 4035 { 4036 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask", 4037 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 4038 } 4039 ], 4040 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [ 4041 { 4042 "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250", 4043 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>" 4044 } 4045 ] 4046 }, 4047 "VkSubpassDescription": { 4048 "core": [ 4049 { 4050 "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844", 4051 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 4052 }, 4053 { 4054 "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845", 4055 "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>" 4056 }, 4057 { 4058 "vuid": "VUID-VkSubpassDescription-loadOp-00846", 4059 "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>" 4060 }, 4061 { 4062 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847", 4063 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>" 4064 }, 4065 { 4066 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848", 4067 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 4068 }, 4069 { 4070 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849", 4071 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 4072 }, 4073 { 4074 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850", 4075 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment" 4076 }, 4077 { 4078 "vuid": "VUID-VkSubpassDescription-pColorAttachments-01417", 4079 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count" 4080 }, 4081 { 4082 "vuid": "VUID-VkSubpassDescription-pInputAttachments-02647", 4083 "text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4084 }, 4085 { 4086 "vuid": "VUID-VkSubpassDescription-pColorAttachments-02648", 4087 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 4088 }, 4089 { 4090 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649", 4091 "text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 4092 }, 4093 { 4094 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650", 4095 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code> and the attachment is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a image format whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4096 }, 4097 { 4098 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418", 4099 "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count" 4100 }, 4101 { 4102 "vuid": "VUID-VkSubpassDescription-attachment-00853", 4103 "text": " The <code>attachment</code> member of each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>" 4104 }, 4105 { 4106 "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854", 4107 "text": " Each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description" 4108 }, 4109 { 4110 "vuid": "VUID-VkSubpassDescription-layout-02519", 4111 "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>" 4112 }, 4113 { 4114 "vuid": "VUID-VkSubpassDescription-None-04437", 4115 "text": " Each attachment <strong class=\"purple\">must</strong> follow the <a href=\"#attachment-type-imagelayout\">image layout requirements</a> specified for its attachment type" 4116 }, 4117 { 4118 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-04438", 4119 "text": " <code>pDepthStencilAttachment</code> and <code>pColorAttachments</code> must not contain references to the same attachment" 4120 }, 4121 { 4122 "vuid": "VUID-VkSubpassDescription-flags-parameter", 4123 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values" 4124 }, 4125 { 4126 "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter", 4127 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 4128 }, 4129 { 4130 "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter", 4131 "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures" 4132 }, 4133 { 4134 "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter", 4135 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures" 4136 }, 4137 { 4138 "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter", 4139 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structures" 4140 }, 4141 { 4142 "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter", 4143 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> structure" 4144 }, 4145 { 4146 "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter", 4147 "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values" 4148 } 4149 ], 4150 "(VK_AMD_mixed_attachment_samples)": [ 4151 { 4152 "vuid": "VUID-VkSubpassDescription-pColorAttachments-01506", 4153 "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>" 4154 } 4155 ], 4156 "(VK_NVX_multiview_per_view_attributes)": [ 4157 { 4158 "vuid": "VUID-VkSubpassDescription-flags-00856", 4159 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>" 4160 } 4161 ], 4162 "(VK_QCOM_render_pass_shader_resolve)": [ 4163 { 4164 "vuid": "VUID-VkSubpassDescription-flags-03341", 4165 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, and if <code>pResolveAttachments</code> is not <code>NULL</code>, then each resolve attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>" 4166 }, 4167 { 4168 "vuid": "VUID-VkSubpassDescription-flags-03342", 4169 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, and if <code>pDepthStencilResolveAttachmentKHR</code> is not <code>NULL</code>, then the depth/stencil resolve attachment <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>" 4170 }, 4171 { 4172 "vuid": "VUID-VkSubpassDescription-flags-03343", 4173 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM</code>, then the subpass <strong class=\"purple\">must</strong> be the last subpass in a subpass dependency chain" 4174 }, 4175 { 4176 "vuid": "VUID-VkSubpassDescription-flags-03344", 4177 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, then the sample count of the input attachments <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>" 4178 }, 4179 { 4180 "vuid": "VUID-VkSubpassDescription-flags-03345", 4181 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM</code>, and if <code>sampleShadingEnable</code> is enabled (explicitly or implicitly) then <code>minSampleShading</code> <strong class=\"purple\">must</strong> equal 0.0" 4182 } 4183 ], 4184 "(VK_QCOM_render_pass_transform)": [ 4185 { 4186 "vuid": "VUID-VkSubpassDescription-pInputAttachments-02868", 4187 "text": " If the render pass is created with <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code> each of the elements of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>" 4188 } 4189 ] 4190 }, 4191 "VkAttachmentReference": { 4192 "core": [ 4193 { 4194 "vuid": "VUID-VkAttachmentReference-layout-00857", 4195 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR</code>" 4196 }, 4197 { 4198 "vuid": "VUID-VkAttachmentReference-layout-parameter", 4199 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 4200 } 4201 ] 4202 }, 4203 "VkSubpassDependency": { 4204 "core": [ 4205 { 4206 "vuid": "VUID-VkSubpassDependency-srcStageMask-00860", 4207 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 4208 }, 4209 { 4210 "vuid": "VUID-VkSubpassDependency-dstStageMask-00861", 4211 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 4212 }, 4213 { 4214 "vuid": "VUID-VkSubpassDependency-srcStageMask-00862", 4215 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 4216 }, 4217 { 4218 "vuid": "VUID-VkSubpassDependency-dstStageMask-00863", 4219 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 4220 }, 4221 { 4222 "vuid": "VUID-VkSubpassDependency-srcSubpass-00864", 4223 "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order" 4224 }, 4225 { 4226 "vuid": "VUID-VkSubpassDependency-srcSubpass-00865", 4227 "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>" 4228 }, 4229 { 4230 "vuid": "VUID-VkSubpassDependency-srcSubpass-00867", 4231 "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>" 4232 }, 4233 { 4234 "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868", 4235 "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 4236 }, 4237 { 4238 "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869", 4239 "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 4240 }, 4241 { 4242 "vuid": "VUID-VkSubpassDependency-srcSubpass-02243", 4243 "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>" 4244 }, 4245 { 4246 "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter", 4247 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 4248 }, 4249 { 4250 "vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask", 4251 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 4252 }, 4253 { 4254 "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter", 4255 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 4256 }, 4257 { 4258 "vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask", 4259 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 4260 }, 4261 { 4262 "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter", 4263 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 4264 }, 4265 { 4266 "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter", 4267 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 4268 }, 4269 { 4270 "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter", 4271 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values" 4272 } 4273 ], 4274 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 4275 { 4276 "vuid": "VUID-VkSubpassDependency-dependencyFlags-02520", 4277 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>" 4278 }, 4279 { 4280 "vuid": "VUID-VkSubpassDependency-dependencyFlags-02521", 4281 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>" 4282 }, 4283 { 4284 "vuid": "VUID-VkSubpassDependency-srcSubpass-00872", 4285 "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code> and that subpass has more than one bit set in the view mask, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 4286 } 4287 ], 4288 "(VK_NV_mesh_shader)": [ 4289 { 4290 "vuid": "VUID-VkSubpassDependency-srcStageMask-02099", 4291 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 4292 }, 4293 { 4294 "vuid": "VUID-VkSubpassDependency-srcStageMask-02100", 4295 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 4296 }, 4297 { 4298 "vuid": "VUID-VkSubpassDependency-dstStageMask-02101", 4299 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 4300 }, 4301 { 4302 "vuid": "VUID-VkSubpassDependency-dstStageMask-02102", 4303 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 4304 } 4305 ] 4306 }, 4307 "vkCreateRenderPass2": { 4308 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 4309 { 4310 "vuid": "VUID-vkCreateRenderPass2-device-parameter", 4311 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 4312 }, 4313 { 4314 "vuid": "VUID-vkCreateRenderPass2-pCreateInfo-parameter", 4315 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassCreateInfo2\">VkRenderPassCreateInfo2</a> structure" 4316 }, 4317 { 4318 "vuid": "VUID-vkCreateRenderPass2-pAllocator-parameter", 4319 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 4320 }, 4321 { 4322 "vuid": "VUID-vkCreateRenderPass2-pRenderPass-parameter", 4323 "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRenderPass\">VkRenderPass</a> handle" 4324 } 4325 ] 4326 }, 4327 "VkRenderPassCreateInfo2": { 4328 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 4329 { 4330 "vuid": "VUID-VkRenderPassCreateInfo2-None-03049", 4331 "text": " If any two subpasses operate on attachments with overlapping ranges of the same <code>VkDeviceMemory</code> object, and at least one subpass writes to that area of <code>VkDeviceMemory</code>, a subpass dependency <strong class=\"purple\">must</strong> be included (either directly or via some intermediate subpasses) between them" 4332 }, 4333 { 4334 "vuid": "VUID-VkRenderPassCreateInfo2-attachment-03050", 4335 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or the attachment indexed by any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is bound to a range of a <code>VkDeviceMemory</code> object that overlaps with any other attachment in any subpass (including the same subpass), the <code>VkAttachmentDescription2</code> structures describing them <strong class=\"purple\">must</strong> include <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> in <code>flags</code>" 4336 }, 4337 { 4338 "vuid": "VUID-VkRenderPassCreateInfo2-attachment-03051", 4339 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>" 4340 }, 4341 { 4342 "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02522", 4343 "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 4344 }, 4345 { 4346 "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-02523", 4347 "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>" 4348 }, 4349 { 4350 "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03054", 4351 "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass" 4352 }, 4353 { 4354 "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03055", 4355 "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the destination subpass" 4356 }, 4357 { 4358 "vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-03056", 4359 "text": " The set of bits included in any element of <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> not overlap with the set of bits included in any other element of <code>pCorrelatedViewMasks</code>" 4360 }, 4361 { 4362 "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03057", 4363 "text": " If the <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 4364 }, 4365 { 4366 "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03058", 4367 "text": " The <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>" 4368 }, 4369 { 4370 "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-03059", 4371 "text": " If the <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, the <code>dependencyFlags</code> member of any element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 4372 }, 4373 { 4374 "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-03060", 4375 "text": " For any element of <code>pDependencies</code> where its <code>srcSubpass</code> member equals its <code>dstSubpass</code> member, if the <code>viewMask</code> member of the corresponding element of <code>pSubpasses</code> includes more than one bit, its <code>dependencyFlags</code> member <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>" 4376 }, 4377 { 4378 "vuid": "VUID-VkRenderPassCreateInfo2-viewMask-02524", 4379 "text": " The <code>viewMask</code> member <strong class=\"purple\">must</strong> not have a bit set at an index greater than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>" 4380 }, 4381 { 4382 "vuid": "VUID-VkRenderPassCreateInfo2-attachment-02525", 4383 "text": " If the <code>attachment</code> member of any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of that element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> specified by <code>attachment</code>" 4384 }, 4385 { 4386 "vuid": "VUID-VkRenderPassCreateInfo2-srcSubpass-02526", 4387 "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 4388 }, 4389 { 4390 "vuid": "VUID-VkRenderPassCreateInfo2-dstSubpass-02527", 4391 "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>" 4392 }, 4393 { 4394 "vuid": "VUID-VkRenderPassCreateInfo2-sType-sType", 4395 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2</code>" 4396 }, 4397 { 4398 "vuid": "VUID-VkRenderPassCreateInfo2-pNext-pNext", 4399 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>" 4400 }, 4401 { 4402 "vuid": "VUID-VkRenderPassCreateInfo2-sType-unique", 4403 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 4404 }, 4405 { 4406 "vuid": "VUID-VkRenderPassCreateInfo2-flags-parameter", 4407 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkRenderPassCreateFlagBits\">VkRenderPassCreateFlagBits</a> values" 4408 }, 4409 { 4410 "vuid": "VUID-VkRenderPassCreateInfo2-pAttachments-parameter", 4411 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkAttachmentDescription2\">VkAttachmentDescription2</a> structures" 4412 }, 4413 { 4414 "vuid": "VUID-VkRenderPassCreateInfo2-pSubpasses-parameter", 4415 "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <a href=\"#VkSubpassDescription2\">VkSubpassDescription2</a> structures" 4416 }, 4417 { 4418 "vuid": "VUID-VkRenderPassCreateInfo2-pDependencies-parameter", 4419 "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <a href=\"#VkSubpassDependency2\">VkSubpassDependency2</a> structures" 4420 }, 4421 { 4422 "vuid": "VUID-VkRenderPassCreateInfo2-pCorrelatedViewMasks-parameter", 4423 "text": " If <code>correlatedViewMaskCount</code> is not <code>0</code>, <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlatedViewMaskCount</code> <code>uint32_t</code> values" 4424 }, 4425 { 4426 "vuid": "VUID-VkRenderPassCreateInfo2-subpassCount-arraylength", 4427 "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 4428 } 4429 ], 4430 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [ 4431 { 4432 "vuid": "VUID-VkRenderPassCreateInfo2-pAttachmentImageInfos-04520", 4433 "text": " If any element of <code>pAttachmentImageInfos</code> is used as a fragment shading rate attachment in any subpass, it <strong class=\"purple\">must</strong> not be used as any other attachment in the render pass" 4434 } 4435 ], 4436 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)+(VK_QCOM_render_pass_transform)": [ 4437 { 4438 "vuid": "VUID-VkRenderPassCreateInfo2-flags-04521", 4439 "text": " If <code>flags</code> includes <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code>, an element of <code>pSubpasses</code> includes an instance of <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> in its <code>pNext</code> chain, and the <code>pFragmentShadingRateAttachment</code> member of that structure is not equal to <code>NULL</code>, the <code>attachment</code> member of <code>pFragmentShadingRateAttachment</code> <strong class=\"purple\">must</strong> be <code>VK_ATTACHMENT_UNUSED</code>" 4440 } 4441 ] 4442 }, 4443 "VkAttachmentDescription2": { 4444 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 4445 { 4446 "vuid": "VUID-VkAttachmentDescription2-finalLayout-03061", 4447 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 4448 }, 4449 { 4450 "vuid": "VUID-VkAttachmentDescription2-format-03294", 4451 "text": " If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 4452 }, 4453 { 4454 "vuid": "VUID-VkAttachmentDescription2-format-03295", 4455 "text": " If <code>format</code> is a depth/stencil format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>" 4456 }, 4457 { 4458 "vuid": "VUID-VkAttachmentDescription2-format-03296", 4459 "text": " If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 4460 }, 4461 { 4462 "vuid": "VUID-VkAttachmentDescription2-format-03297", 4463 "text": " If <code>format</code> is a depth/stencil format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>" 4464 }, 4465 { 4466 "vuid": "VUID-VkAttachmentDescription2-sType-sType", 4467 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2</code>" 4468 }, 4469 { 4470 "vuid": "VUID-VkAttachmentDescription2-flags-parameter", 4471 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values" 4472 }, 4473 { 4474 "vuid": "VUID-VkAttachmentDescription2-format-parameter", 4475 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 4476 }, 4477 { 4478 "vuid": "VUID-VkAttachmentDescription2-samples-parameter", 4479 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 4480 }, 4481 { 4482 "vuid": "VUID-VkAttachmentDescription2-loadOp-parameter", 4483 "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" 4484 }, 4485 { 4486 "vuid": "VUID-VkAttachmentDescription2-storeOp-parameter", 4487 "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" 4488 }, 4489 { 4490 "vuid": "VUID-VkAttachmentDescription2-stencilLoadOp-parameter", 4491 "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value" 4492 }, 4493 { 4494 "vuid": "VUID-VkAttachmentDescription2-stencilStoreOp-parameter", 4495 "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value" 4496 }, 4497 { 4498 "vuid": "VUID-VkAttachmentDescription2-initialLayout-parameter", 4499 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 4500 }, 4501 { 4502 "vuid": "VUID-VkAttachmentDescription2-finalLayout-parameter", 4503 "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 4504 } 4505 ], 4506 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 4507 { 4508 "vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03298", 4509 "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 4510 }, 4511 { 4512 "vuid": "VUID-VkAttachmentDescription2-separateDepthStencilLayouts-03299", 4513 "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 4514 }, 4515 { 4516 "vuid": "VUID-VkAttachmentDescription2-format-03300", 4517 "text": " If <code>format</code> is a color format, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 4518 }, 4519 { 4520 "vuid": "VUID-VkAttachmentDescription2-format-03301", 4521 "text": " If <code>format</code> is a color format, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 4522 }, 4523 { 4524 "vuid": "VUID-VkAttachmentDescription2-format-03302", 4525 "text": " If <code>format</code> is a depth/stencil format which includes both depth and stencil aspects, and <code>initialLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure" 4526 }, 4527 { 4528 "vuid": "VUID-VkAttachmentDescription2-format-03303", 4529 "text": " If <code>format</code> is a depth/stencil format which includes both depth and stencil aspects, and <code>finalLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkAttachmentDescriptionStencilLayout\">VkAttachmentDescriptionStencilLayout</a> structure" 4530 }, 4531 { 4532 "vuid": "VUID-VkAttachmentDescription2-format-03304", 4533 "text": " If <code>format</code> is a depth/stencil format which includes only the depth aspect, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 4534 }, 4535 { 4536 "vuid": "VUID-VkAttachmentDescription2-format-03305", 4537 "text": " If <code>format</code> is a depth/stencil format which includes only the depth aspect, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 4538 }, 4539 { 4540 "vuid": "VUID-VkAttachmentDescription2-format-03306", 4541 "text": " If <code>format</code> is a depth/stencil format which includes only the stencil aspect, <code>initialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>" 4542 }, 4543 { 4544 "vuid": "VUID-VkAttachmentDescription2-format-03307", 4545 "text": " If <code>format</code> is a depth/stencil format which includes only the stencil aspect, <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>" 4546 } 4547 ] 4548 }, 4549 "VkAttachmentDescriptionStencilLayout": { 4550 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 4551 { 4552 "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-03308", 4553 "text": " <code>stencilInitialLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 4554 }, 4555 { 4556 "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03309", 4557 "text": " <code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 4558 }, 4559 { 4560 "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-03310", 4561 "text": " <code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 4562 }, 4563 { 4564 "vuid": "VUID-VkAttachmentDescriptionStencilLayout-sType-sType", 4565 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT</code>" 4566 }, 4567 { 4568 "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilInitialLayout-parameter", 4569 "text": " <code>stencilInitialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 4570 }, 4571 { 4572 "vuid": "VUID-VkAttachmentDescriptionStencilLayout-stencilFinalLayout-parameter", 4573 "text": " <code>stencilFinalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 4574 } 4575 ] 4576 }, 4577 "VkSubpassDescription2": { 4578 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 4579 { 4580 "vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-03062", 4581 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 4582 }, 4583 { 4584 "vuid": "VUID-VkSubpassDescription2-colorAttachmentCount-03063", 4585 "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>" 4586 }, 4587 { 4588 "vuid": "VUID-VkSubpassDescription2-loadOp-03064", 4589 "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>" 4590 }, 4591 { 4592 "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03065", 4593 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that does not have the value <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>" 4594 }, 4595 { 4596 "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03066", 4597 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 4598 }, 4599 { 4600 "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03067", 4601 "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 4602 }, 4603 { 4604 "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-03068", 4605 "text": " Any given element of <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment" 4606 }, 4607 { 4608 "vuid": "VUID-VkSubpassDescription2-pColorAttachments-03069", 4609 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count" 4610 }, 4611 { 4612 "vuid": "VUID-VkSubpassDescription2-pInputAttachments-02897", 4613 "text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4614 }, 4615 { 4616 "vuid": "VUID-VkSubpassDescription2-pColorAttachments-02898", 4617 "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 4618 }, 4619 { 4620 "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-02899", 4621 "text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have image formats whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 4622 }, 4623 { 4624 "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-02900", 4625 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code> and the attachment is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a image format whose <a href=\"#potential-format-features\">potential format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4626 }, 4627 { 4628 "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-03071", 4629 "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count" 4630 }, 4631 { 4632 "vuid": "VUID-VkSubpassDescription2-attachment-03073", 4633 "text": " The <code>attachment</code> member of any element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>" 4634 }, 4635 { 4636 "vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-03074", 4637 "text": " Any given element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description" 4638 }, 4639 { 4640 "vuid": "VUID-VkSubpassDescription2-layout-02528", 4641 "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>" 4642 }, 4643 { 4644 "vuid": "VUID-VkSubpassDescription2-None-04439", 4645 "text": " Attachments <strong class=\"purple\">must</strong> follow the <a href=\"#attachment-type-imagelayout\">image layout requirements</a> based on the type of attachment it is being used as" 4646 }, 4647 { 4648 "vuid": "VUID-VkSubpassDescription2-attachment-02799", 4649 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a>" 4650 }, 4651 { 4652 "vuid": "VUID-VkSubpassDescription2-attachment-02800", 4653 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> not be <code>0</code>" 4654 }, 4655 { 4656 "vuid": "VUID-VkSubpassDescription2-attachment-02801", 4657 "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code> is not <code>VK_ATTACHMENT_UNUSED</code>, then the <code>aspectMask</code> member <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" 4658 }, 4659 { 4660 "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-04440", 4661 "text": " An attachment <strong class=\"purple\">must</strong> not be used in both <code>pDepthStencilAttachment</code> and <code>pColorAttachments</code>" 4662 }, 4663 { 4664 "vuid": "VUID-VkSubpassDescription2-sType-sType", 4665 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2</code>" 4666 }, 4667 { 4668 "vuid": "VUID-VkSubpassDescription2-flags-parameter", 4669 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values" 4670 }, 4671 { 4672 "vuid": "VUID-VkSubpassDescription2-pipelineBindPoint-parameter", 4673 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 4674 }, 4675 { 4676 "vuid": "VUID-VkSubpassDescription2-pInputAttachments-parameter", 4677 "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures" 4678 }, 4679 { 4680 "vuid": "VUID-VkSubpassDescription2-pColorAttachments-parameter", 4681 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures" 4682 }, 4683 { 4684 "vuid": "VUID-VkSubpassDescription2-pResolveAttachments-parameter", 4685 "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structures" 4686 }, 4687 { 4688 "vuid": "VUID-VkSubpassDescription2-pDepthStencilAttachment-parameter", 4689 "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure" 4690 }, 4691 { 4692 "vuid": "VUID-VkSubpassDescription2-pPreserveAttachments-parameter", 4693 "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values" 4694 } 4695 ], 4696 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [ 4697 { 4698 "vuid": "VUID-VkSubpassDescription2-pColorAttachments-03070", 4699 "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>" 4700 } 4701 ], 4702 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [ 4703 { 4704 "vuid": "VUID-VkSubpassDescription2-flags-03076", 4705 "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>" 4706 } 4707 ], 4708 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [ 4709 { 4710 "vuid": "VUID-VkSubpassDescription2-pFragmentShadingRateAttachment-04522", 4711 "text": " If the <code>pFragmentShadingRateAttachment</code> member of a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> structure included in the <code>pNext</code> chain is not <code>NULL</code>, and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, that attachment <strong class=\"purple\">must</strong> not be used as any other attachment in this subpass" 4712 } 4713 ] 4714 }, 4715 "VkSubpassDescriptionDepthStencilResolve": { 4716 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [ 4717 { 4718 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03177", 4719 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>" 4720 }, 4721 { 4722 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03178", 4723 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> not both be <code>VK_RESOLVE_MODE_NONE</code>" 4724 }, 4725 { 4726 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03179", 4727 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 4728 }, 4729 { 4730 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03180", 4731 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>" 4732 }, 4733 { 4734 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-02651", 4735 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 4736 }, 4737 { 4738 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03181", 4739 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a depth component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a depth component with the same number of bits and numerical type" 4740 }, 4741 { 4742 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03182", 4743 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a stencil component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a stencil component with the same number of bits and numerical type" 4744 }, 4745 { 4746 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-03183", 4747 "text": " The value of <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedDepthResolveModes</code> or <code>VK_RESOLVE_MODE_NONE</code>" 4748 }, 4749 { 4750 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-03184", 4751 "text": " The value of <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>supportedStencilResolveModes</code> or <code>VK_RESOLVE_MODE_NONE</code>" 4752 }, 4753 { 4754 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03185", 4755 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolveNone</code> is <code>VK_FALSE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical" 4756 }, 4757 { 4758 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-03186", 4759 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolve</code> is <code>VK_FALSE</code> and <a href=\"#VkPhysicalDeviceDepthStencilResolveProperties\">VkPhysicalDeviceDepthStencilResolveProperties</a>::<code>independentResolveNone</code> is <code>VK_TRUE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical or one of them <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE</code>" 4760 }, 4761 { 4762 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-sType-sType", 4763 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE</code>" 4764 }, 4765 { 4766 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-depthResolveMode-parameter", 4767 "text": " <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBits\">VkResolveModeFlagBits</a> value" 4768 }, 4769 { 4770 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-stencilResolveMode-parameter", 4771 "text": " <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBits\">VkResolveModeFlagBits</a> value" 4772 }, 4773 { 4774 "vuid": "VUID-VkSubpassDescriptionDepthStencilResolve-pDepthStencilResolveAttachment-parameter", 4775 "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure" 4776 } 4777 ] 4778 }, 4779 "VkFragmentShadingRateAttachmentInfoKHR": { 4780 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_KHR_fragment_shading_rate)": [ 4781 { 4782 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04523", 4783 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>" 4784 }, 4785 { 4786 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04524", 4787 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, its <code>layout</code> member <strong class=\"purple\">must</strong> be equal to <code>VK_IMAGE_LAYOUT_GENERAL</code> or <code>VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR</code>" 4788 }, 4789 { 4790 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04525", 4791 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be a power of two value" 4792 }, 4793 { 4794 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04526", 4795 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSize\"><code>maxFragmentShadingRateAttachmentTexelSize.width</code></a>" 4796 }, 4797 { 4798 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04527", 4799 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minFragmentShadingRateAttachmentTexelSize\"><code>minFragmentShadingRateAttachmentTexelSize.width</code></a>" 4800 }, 4801 { 4802 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04528", 4803 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be a power of two value" 4804 }, 4805 { 4806 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04529", 4807 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSize\"><code>maxFragmentShadingRateAttachmentTexelSize.height</code></a>" 4808 }, 4809 { 4810 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04530", 4811 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#limits-minFragmentShadingRateAttachmentTexelSize\"><code>minFragmentShadingRateAttachmentTexelSize.height</code></a>" 4812 }, 4813 { 4814 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04531", 4815 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the quotient of <code>shadingRateAttachmentTexelSize.width</code> and <code>shadingRateAttachmentTexelSize.height</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio\"><code>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</code></a>" 4816 }, 4817 { 4818 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-04532", 4819 "text": " If <code>pFragmentShadingRateAttachment</code> is not <code>NULL</code> and its <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the quotient of <code>shadingRateAttachmentTexelSize.height</code> and <code>shadingRateAttachmentTexelSize.width</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxFragmentShadingRateAttachmentTexelSizeAspectRatio\"><code>maxFragmentShadingRateAttachmentTexelSizeAspectRatio</code></a>" 4820 }, 4821 { 4822 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-sType-sType", 4823 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR</code>" 4824 }, 4825 { 4826 "vuid": "VUID-VkFragmentShadingRateAttachmentInfoKHR-pFragmentShadingRateAttachment-parameter", 4827 "text": " <code>pFragmentShadingRateAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAttachmentReference2\">VkAttachmentReference2</a> structure" 4828 } 4829 ] 4830 }, 4831 "VkAttachmentReference2": { 4832 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 4833 { 4834 "vuid": "VUID-VkAttachmentReference2-layout-03077", 4835 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, or <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>" 4836 }, 4837 { 4838 "vuid": "VUID-VkAttachmentReference2-attachment-03311", 4839 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> does not include <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> or <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>" 4840 }, 4841 { 4842 "vuid": "VUID-VkAttachmentReference2-attachment-03312", 4843 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> does not include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>" 4844 }, 4845 { 4846 "vuid": "VUID-VkAttachmentReference2-sType-sType", 4847 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2</code>" 4848 }, 4849 { 4850 "vuid": "VUID-VkAttachmentReference2-layout-parameter", 4851 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 4852 } 4853 ], 4854 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 4855 { 4856 "vuid": "VUID-VkAttachmentReference2-separateDepthStencilLayouts-03313", 4857 "text": " If the <a href=\"#features-separateDepthStencilLayouts\"><code>separateDepthStencilLayouts</code></a> feature is not enabled, and <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>," 4858 }, 4859 { 4860 "vuid": "VUID-VkAttachmentReference2-attachment-03314", 4861 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>," 4862 }, 4863 { 4864 "vuid": "VUID-VkAttachmentReference2-attachment-03315", 4865 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> includes both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>layout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkAttachmentReferenceStencilLayout\">VkAttachmentReferenceStencilLayout</a> structure" 4866 }, 4867 { 4868 "vuid": "VUID-VkAttachmentReference2-attachment-03316", 4869 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> includes only <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> then <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code>" 4870 }, 4871 { 4872 "vuid": "VUID-VkAttachmentReference2-attachment-03317", 4873 "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, and <code>aspectMask</code> includes only <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> then <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>" 4874 } 4875 ] 4876 }, 4877 "VkAttachmentReferenceStencilLayout": { 4878 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 4879 { 4880 "vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-03318", 4881 "text": " <code>stencilLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>, <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>" 4882 }, 4883 { 4884 "vuid": "VUID-VkAttachmentReferenceStencilLayout-sType-sType", 4885 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT</code>" 4886 }, 4887 { 4888 "vuid": "VUID-VkAttachmentReferenceStencilLayout-stencilLayout-parameter", 4889 "text": " <code>stencilLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 4890 } 4891 ] 4892 }, 4893 "VkSubpassDependency2": { 4894 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 4895 { 4896 "vuid": "VUID-VkSubpassDependency2-srcStageMask-03080", 4897 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 4898 }, 4899 { 4900 "vuid": "VUID-VkSubpassDependency2-dstStageMask-03081", 4901 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 4902 }, 4903 { 4904 "vuid": "VUID-VkSubpassDependency2-srcStageMask-03082", 4905 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 4906 }, 4907 { 4908 "vuid": "VUID-VkSubpassDependency2-dstStageMask-03083", 4909 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 4910 }, 4911 { 4912 "vuid": "VUID-VkSubpassDependency2-srcSubpass-03084", 4913 "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order" 4914 }, 4915 { 4916 "vuid": "VUID-VkSubpassDependency2-srcSubpass-03085", 4917 "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>" 4918 }, 4919 { 4920 "vuid": "VUID-VkSubpassDependency2-srcSubpass-03087", 4921 "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>" 4922 }, 4923 { 4924 "vuid": "VUID-VkSubpassDependency2-srcAccessMask-03088", 4925 "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 4926 }, 4927 { 4928 "vuid": "VUID-VkSubpassDependency2-dstAccessMask-03089", 4929 "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>" 4930 }, 4931 { 4932 "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03090", 4933 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>" 4934 }, 4935 { 4936 "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03091", 4937 "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>" 4938 }, 4939 { 4940 "vuid": "VUID-VkSubpassDependency2-srcSubpass-02245", 4941 "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>" 4942 }, 4943 { 4944 "vuid": "VUID-VkSubpassDependency2-viewOffset-02530", 4945 "text": " If <code>viewOffset</code> is not equal to <code>0</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>dstSubpass</code>" 4946 }, 4947 { 4948 "vuid": "VUID-VkSubpassDependency2-dependencyFlags-03092", 4949 "text": " If <code>dependencyFlags</code> does not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>viewOffset</code> <strong class=\"purple\">must</strong> be <code>0</code>" 4950 }, 4951 { 4952 "vuid": "VUID-VkSubpassDependency2-sType-sType", 4953 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2</code>" 4954 }, 4955 { 4956 "vuid": "VUID-VkSubpassDependency2-srcStageMask-parameter", 4957 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 4958 }, 4959 { 4960 "vuid": "VUID-VkSubpassDependency2-srcStageMask-requiredbitmask", 4961 "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 4962 }, 4963 { 4964 "vuid": "VUID-VkSubpassDependency2-dstStageMask-parameter", 4965 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values" 4966 }, 4967 { 4968 "vuid": "VUID-VkSubpassDependency2-dstStageMask-requiredbitmask", 4969 "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 4970 }, 4971 { 4972 "vuid": "VUID-VkSubpassDependency2-srcAccessMask-parameter", 4973 "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 4974 }, 4975 { 4976 "vuid": "VUID-VkSubpassDependency2-dstAccessMask-parameter", 4977 "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values" 4978 }, 4979 { 4980 "vuid": "VUID-VkSubpassDependency2-dependencyFlags-parameter", 4981 "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values" 4982 } 4983 ], 4984 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_NV_mesh_shader)": [ 4985 { 4986 "vuid": "VUID-VkSubpassDependency2-srcStageMask-02103", 4987 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 4988 }, 4989 { 4990 "vuid": "VUID-VkSubpassDependency2-srcStageMask-02104", 4991 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 4992 }, 4993 { 4994 "vuid": "VUID-VkSubpassDependency2-dstStageMask-02105", 4995 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>" 4996 }, 4997 { 4998 "vuid": "VUID-VkSubpassDependency2-dstStageMask-02106", 4999 "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 5000 } 5001 ] 5002 }, 5003 "vkDestroyRenderPass": { 5004 "core": [ 5005 { 5006 "vuid": "VUID-vkDestroyRenderPass-renderPass-00873", 5007 "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution" 5008 }, 5009 { 5010 "vuid": "VUID-vkDestroyRenderPass-renderPass-00874", 5011 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 5012 }, 5013 { 5014 "vuid": "VUID-vkDestroyRenderPass-renderPass-00875", 5015 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5016 }, 5017 { 5018 "vuid": "VUID-vkDestroyRenderPass-device-parameter", 5019 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 5020 }, 5021 { 5022 "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter", 5023 "text": " If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle" 5024 }, 5025 { 5026 "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter", 5027 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 5028 }, 5029 { 5030 "vuid": "VUID-vkDestroyRenderPass-renderPass-parent", 5031 "text": " If <code>renderPass</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5032 } 5033 ] 5034 }, 5035 "vkCreateFramebuffer": { 5036 "core": [ 5037 { 5038 "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-02777", 5039 "text": " If <code>pCreateInfo->flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>attachmentCount</code> is not <code>0</code>, each element of <code>pCreateInfo->pAttachments</code> <strong class=\"purple\">must</strong> have been created on <code>device</code>" 5040 }, 5041 { 5042 "vuid": "VUID-vkCreateFramebuffer-device-parameter", 5043 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 5044 }, 5045 { 5046 "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter", 5047 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a> structure" 5048 }, 5049 { 5050 "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter", 5051 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 5052 }, 5053 { 5054 "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter", 5055 "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle" 5056 } 5057 ] 5058 }, 5059 "VkFramebufferCreateInfo": { 5060 "core": [ 5061 { 5062 "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876", 5063 "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>" 5064 }, 5065 { 5066 "vuid": "VUID-VkFramebufferCreateInfo-flags-02778", 5067 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkImageView\">VkImageView</a> handles" 5068 }, 5069 { 5070 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877", 5071 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>" 5072 }, 5073 { 5074 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633", 5075 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5076 }, 5077 { 5078 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879", 5079 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 5080 }, 5081 { 5082 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880", 5083 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <a href=\"#VkFormat\">VkFormat</a> value that matches the <a href=\"#VkFormat\">VkFormat</a> specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>" 5084 }, 5085 { 5086 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881", 5087 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value that matches the <code>samples</code> value specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>" 5088 }, 5089 { 5090 "vuid": "VUID-VkFramebufferCreateInfo-flags-04533", 5091 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a VkImageCreateInfo::<code>width</code> greater than or equal to <code>width</code>" 5092 }, 5093 { 5094 "vuid": "VUID-VkFramebufferCreateInfo-flags-04534", 5095 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a VkImageCreateInfo::<code>height</code> greater than or equal to <code>height</code>" 5096 }, 5097 { 5098 "vuid": "VUID-VkFramebufferCreateInfo-flags-04535", 5099 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a VkImageViewCreateInfo::<code>subresourceRange.pname</code>:layerCount greater than or equal to <code>layers</code>" 5100 }, 5101 { 5102 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883", 5103 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level" 5104 }, 5105 { 5106 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884", 5107 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle" 5108 }, 5109 { 5110 "vuid": "VUID-VkFramebufferCreateInfo-width-00885", 5111 "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5112 }, 5113 { 5114 "vuid": "VUID-VkFramebufferCreateInfo-width-00886", 5115 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>" 5116 }, 5117 { 5118 "vuid": "VUID-VkFramebufferCreateInfo-height-00887", 5119 "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5120 }, 5121 { 5122 "vuid": "VUID-VkFramebufferCreateInfo-height-00888", 5123 "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>" 5124 }, 5125 { 5126 "vuid": "VUID-VkFramebufferCreateInfo-layers-00889", 5127 "text": " <code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 5128 }, 5129 { 5130 "vuid": "VUID-VkFramebufferCreateInfo-layers-00890", 5131 "text": " <code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferLayers</code>" 5132 }, 5133 { 5134 "vuid": "VUID-VkFramebufferCreateInfo-flags-04113", 5135 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>viewType</code> not equal to <code>VK_IMAGE_VIEW_TYPE_3D</code>" 5136 }, 5137 { 5138 "vuid": "VUID-VkFramebufferCreateInfo-sType-sType", 5139 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>" 5140 }, 5141 { 5142 "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext", 5143 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>" 5144 }, 5145 { 5146 "vuid": "VUID-VkFramebufferCreateInfo-sType-unique", 5147 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 5148 }, 5149 { 5150 "vuid": "VUID-VkFramebufferCreateInfo-flags-parameter", 5151 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFramebufferCreateFlagBits\">VkFramebufferCreateFlagBits</a> values" 5152 }, 5153 { 5154 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter", 5155 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle" 5156 }, 5157 { 5158 "vuid": "VUID-VkFramebufferCreateInfo-commonparent", 5159 "text": " Both of <code>renderPass</code>, and the elements of <code>pAttachments</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 5160 } 5161 ], 5162 "(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [ 5163 { 5164 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634", 5165 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as a depth/stencil resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5166 } 5167 ], 5168 "(VK_EXT_fragment_density_map)": [ 5169 { 5170 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552", 5171 "text": " Each element of <code>pAttachments</code> that is used as a fragment density map attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> not have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 5172 }, 5173 { 5174 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553", 5175 "text": " If <code>renderPass</code> has a fragment density map attachment and <a href=\"#features-fragmentDensityMapNonSubsampledImages\">non-subsample image feature</a> is not enabled, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> unless that element is the fragment density map attachment" 5176 }, 5177 { 5178 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555", 5179 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a width at least as large as \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)" 5180 }, 5181 { 5182 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556", 5183 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a height at least as large as \\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)" 5184 } 5185 ], 5186 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 5187 { 5188 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-04536", 5189 "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is used as an input, color, resolve, or depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> greater than the index of the most significant bit set in any of those view masks" 5190 }, 5191 { 5192 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531", 5193 "text": " If <code>renderPass</code> was specified with non-zero view masks, <code>layers</code> <strong class=\"purple\">must</strong> be <code>1</code>" 5194 } 5195 ], 5196 "(VK_EXT_fragment_density_map)+!(VK_VERSION_1_1,VK_KHR_multiview)": [ 5197 { 5198 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02744", 5199 "text": " An element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code>" 5200 } 5201 ], 5202 "(VK_EXT_fragment_density_map)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 5203 { 5204 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02746", 5205 "text": " If <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code> or greater than the index of the most significant bit set in any of those view masks" 5206 }, 5207 { 5208 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02747", 5209 "text": " If <code>renderPass</code> was not specified with non-zero view masks, each element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> equal to <code>1</code>" 5210 } 5211 ], 5212 "(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 5213 { 5214 "vuid": "VUID-VkFramebufferCreateInfo-flags-04537", 5215 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>renderPass</code> was specified with non-zero view masks, each element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that is either <code>1</code>, or greater than the index of the most significant bit set in any of those view masks" 5216 }, 5217 { 5218 "vuid": "VUID-VkFramebufferCreateInfo-flags-04538", 5219 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and <code>renderPass</code> was not specified with non-zero view masks, each element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> by <code>renderPass</code> <strong class=\"purple\">must</strong> have a <code>layerCount</code> that is either <code>1</code>, or greater than <code>layers</code>" 5220 } 5221 ], 5222 "(VK_KHR_fragment_shading_rate)": [ 5223 { 5224 "vuid": "VUID-VkFramebufferCreateInfo-flags-04539", 5225 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> have a width at least as large as <span class=\"eq\">{lceil}<code>width</code> \\ <code>texelWidth</code>{rceil}</span>, where <code>texelWidth</code> is the largest value of <code>shadingRateAttachmentTexelSize.width</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment" 5226 }, 5227 { 5228 "vuid": "VUID-VkFramebufferCreateInfo-flags-04540", 5229 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, an element of <code>pAttachments</code> that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> have a height at least as large as <span class=\"eq\">{lceil}<code>height</code> \\ <code>texelHeight</code>{rceil}</span>, where <code>texelHeight</code> is the largest value of <code>shadingRateAttachmentTexelSize.height</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment" 5230 }, 5231 { 5232 "vuid": "VUID-VkFramebufferCreateInfo-flags-04548", 5233 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is used as a fragment shading rate attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>" 5234 } 5235 ], 5236 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 5237 { 5238 "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891", 5239 "text": " If <code>flags</code> does not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of <code>pAttachments</code> that is a 2D or 2D array image view taken from a 3D image <strong class=\"purple\">must</strong> not be a depth/stencil format" 5240 } 5241 ], 5242 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [ 5243 { 5244 "vuid": "VUID-VkFramebufferCreateInfo-flags-03189", 5245 "text": " If the <a href=\"#features-imagelessFramebuffer\">imageless framebuffer</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>" 5246 }, 5247 { 5248 "vuid": "VUID-VkFramebufferCreateInfo-flags-03190", 5249 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a>" 5250 }, 5251 { 5252 "vuid": "VUID-VkFramebufferCreateInfo-flags-03191", 5253 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentImageInfoCount</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to either zero or <code>attachmentCount</code>" 5254 }, 5255 { 5256 "vuid": "VUID-VkFramebufferCreateInfo-flags-04541", 5257 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>width</code>" 5258 }, 5259 { 5260 "vuid": "VUID-VkFramebufferCreateInfo-flags-04542", 5261 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain that is used as an input, color, resolve or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>height</code>" 5262 }, 5263 { 5264 "vuid": "VUID-VkFramebufferCreateInfo-flags-03201", 5265 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>" 5266 }, 5267 { 5268 "vuid": "VUID-VkFramebufferCreateInfo-flags-03202", 5269 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5270 }, 5271 { 5272 "vuid": "VUID-VkFramebufferCreateInfo-flags-03204", 5273 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 5274 }, 5275 { 5276 "vuid": "VUID-VkFramebufferCreateInfo-flags-03205", 5277 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, at least one element of the <code>pViewFormats</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>format</code> used to create <code>renderPass</code>" 5278 } 5279 ], 5280 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_EXT_fragment_density_map)": [ 5281 { 5282 "vuid": "VUID-VkFramebufferCreateInfo-flags-03196", 5283 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfoKHR\">VkFramebufferAttachmentsCreateInfoKHR</a> in the <code>pNext</code> chain that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to \\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\)" 5284 }, 5285 { 5286 "vuid": "VUID-VkFramebufferCreateInfo-flags-03197", 5287 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that is referenced by <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>::<code>fragmentDensityMapAttachment</code> in <code>renderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to \\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\)" 5288 } 5289 ], 5290 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_KHR_fragment_shading_rate)": [ 5291 { 5292 "vuid": "VUID-VkFramebufferCreateInfo-flags-04543", 5293 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>width</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\">{lceil}<code>width</code> \\ <code>texelWidth</code>{rceil}</span>, where <code>texelWidth</code> is the largest value of <code>shadingRateAttachmentTexelSize.width</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment" 5294 }, 5295 { 5296 "vuid": "VUID-VkFramebufferCreateInfo-flags-04544", 5297 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>height</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\">{lceil}<code>height</code> \\ <code>texelHeight</code>{rceil}</span>, where <code>texelHeight</code> is the largest value of <code>shadingRateAttachmentTexelSize.height</code> in a <a href=\"#VkFragmentShadingRateAttachmentInfoKHR\">VkFragmentShadingRateAttachmentInfoKHR</a> which references that attachment" 5298 }, 5299 { 5300 "vuid": "VUID-VkFramebufferCreateInfo-flags-04545", 5301 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of an instance of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> in the <code>pNext</code> chain that is used as a <a href=\"#primsrast-fragment-shading-rate-attachment\">fragment shading rate attachment</a> <strong class=\"purple\">must</strong> be either <code>1</code>, or greater than or equal to <code>layers</code>" 5302 } 5303 ], 5304 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 5305 { 5306 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-03198", 5307 "text": " If multiview is enabled for <code>renderPass</code>, and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain used as an input, color, resolve, or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than the maximum bit index set in the view mask in the subpasses in which it is used in <code>renderPass</code>" 5308 }, 5309 { 5310 "vuid": "VUID-VkFramebufferCreateInfo-renderPass-04546", 5311 "text": " If multiview is not enabled for <code>renderPass</code>, and <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain used as an input, color, resolve, or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>" 5312 } 5313 ], 5314 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+!(VK_VERSION_1_1+VK_KHR_multiview)": [ 5315 { 5316 "vuid": "VUID-VkFramebufferCreateInfo-flags-04547", 5317 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>layerCount</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain used as an input, color, resolve, or depth/stencil attachment in <code>pRenderPass</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>layers</code>" 5318 } 5319 ], 5320 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)+(VK_KHR_depth_stencil_resolve)": [ 5321 { 5322 "vuid": "VUID-VkFramebufferCreateInfo-flags-03203", 5323 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a depth/stencil resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5324 } 5325 ], 5326 "(VK_KHR_fragment_shading_rate)+(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [ 5327 { 5328 "vuid": "VUID-VkFramebufferCreateInfo-flags-04549", 5329 "text": " If <code>flags</code> includes <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>usage</code> member of any element of the <code>pAttachmentImageInfos</code> member of a <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a> structure included in the <code>pNext</code> chain that refers to an attachment used as a fragment shading rate attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> include <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>" 5330 } 5331 ] 5332 }, 5333 "VkFramebufferAttachmentsCreateInfo": { 5334 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [ 5335 { 5336 "vuid": "VUID-VkFramebufferAttachmentsCreateInfo-sType-sType", 5337 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO</code>" 5338 }, 5339 { 5340 "vuid": "VUID-VkFramebufferAttachmentsCreateInfo-pAttachmentImageInfos-parameter", 5341 "text": " If <code>attachmentImageInfoCount</code> is not <code>0</code>, <code>pAttachmentImageInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentImageInfoCount</code> valid <a href=\"#VkFramebufferAttachmentImageInfo\">VkFramebufferAttachmentImageInfo</a> structures" 5342 } 5343 ] 5344 }, 5345 "VkFramebufferAttachmentImageInfo": { 5346 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [ 5347 { 5348 "vuid": "VUID-VkFramebufferAttachmentImageInfo-sType-sType", 5349 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO</code>" 5350 }, 5351 { 5352 "vuid": "VUID-VkFramebufferAttachmentImageInfo-pNext-pNext", 5353 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5354 }, 5355 { 5356 "vuid": "VUID-VkFramebufferAttachmentImageInfo-flags-parameter", 5357 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 5358 }, 5359 { 5360 "vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-parameter", 5361 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 5362 }, 5363 { 5364 "vuid": "VUID-VkFramebufferAttachmentImageInfo-usage-requiredbitmask", 5365 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 5366 }, 5367 { 5368 "vuid": "VUID-VkFramebufferAttachmentImageInfo-pViewFormats-parameter", 5369 "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>pViewFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewFormatCount</code> valid <a href=\"#VkFormat\">VkFormat</a> values" 5370 } 5371 ] 5372 }, 5373 "vkDestroyFramebuffer": { 5374 "core": [ 5375 { 5376 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892", 5377 "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution" 5378 }, 5379 { 5380 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893", 5381 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 5382 }, 5383 { 5384 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894", 5385 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5386 }, 5387 { 5388 "vuid": "VUID-vkDestroyFramebuffer-device-parameter", 5389 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 5390 }, 5391 { 5392 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter", 5393 "text": " If <code>framebuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle" 5394 }, 5395 { 5396 "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter", 5397 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 5398 }, 5399 { 5400 "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent", 5401 "text": " If <code>framebuffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5402 } 5403 ] 5404 }, 5405 "vkCmdBeginRenderPass": { 5406 "core": [ 5407 { 5408 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895", 5409 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>" 5410 }, 5411 { 5412 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897", 5413 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 5414 }, 5415 { 5416 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898", 5417 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>" 5418 }, 5419 { 5420 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899", 5421 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>" 5422 }, 5423 { 5424 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900", 5425 "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>" 5426 }, 5427 { 5428 "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901", 5429 "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from" 5430 }, 5431 { 5432 "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532", 5433 "text": " For any attachment in <code>framebuffer</code> that is used by <code>renderPass</code> and is bound to memory locations that are also bound to another attachment used by <code>renderPass</code>, and if at least one of those uses causes either attachment to be written to, both attachments <strong class=\"purple\">must</strong> have had the <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> set" 5434 }, 5435 { 5436 "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04102", 5437 "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pInputAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> containing at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5438 }, 5439 { 5440 "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04103", 5441 "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pColorAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> containing <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 5442 }, 5443 { 5444 "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04104", 5445 "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pResolveAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> containing <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 5446 }, 5447 { 5448 "vuid": "VUID-vkCmdBeginRenderPass-pAttachments-04105", 5449 "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pDepthStencilAttachment</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> containing <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5450 }, 5451 { 5452 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter", 5453 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 5454 }, 5455 { 5456 "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter", 5457 "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> structure" 5458 }, 5459 { 5460 "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter", 5461 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value" 5462 }, 5463 { 5464 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording", 5465 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 5466 }, 5467 { 5468 "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool", 5469 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 5470 }, 5471 { 5472 "vuid": "VUID-vkCmdBeginRenderPass-renderpass", 5473 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 5474 }, 5475 { 5476 "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel", 5477 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 5478 } 5479 ], 5480 "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 5481 { 5482 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896", 5483 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5484 } 5485 ], 5486 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 5487 { 5488 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758", 5489 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5490 } 5491 ], 5492 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 5493 { 5494 "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-02842", 5495 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5496 }, 5497 { 5498 "vuid": "VUID-vkCmdBeginRenderPass-stencilInitialLayout-02843", 5499 "text": " If any of the <code>stencilInitialLayout</code> or <code>stencilFinalLayout</code> member of the <code>VkAttachmentDescriptionStencilLayout</code> structures or the <code>stencilLayout</code> member of the <code>VkAttachmentReferenceStencilLayout</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5500 } 5501 ] 5502 }, 5503 "vkCmdBeginRenderPass2": { 5504 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 5505 { 5506 "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02779", 5507 "text": " Both the <code>framebuffer</code> and <code>renderPass</code> members of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created on the same <a href=\"#VkDevice\">VkDevice</a> that <code>commandBuffer</code> was allocated on" 5508 }, 5509 { 5510 "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03094", 5511 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>" 5512 }, 5513 { 5514 "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03096", 5515 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5516 }, 5517 { 5518 "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03097", 5519 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 5520 }, 5521 { 5522 "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03098", 5523 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>" 5524 }, 5525 { 5526 "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03099", 5527 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>" 5528 }, 5529 { 5530 "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-03100", 5531 "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>" 5532 }, 5533 { 5534 "vuid": "VUID-vkCmdBeginRenderPass2-srcStageMask-03101", 5535 "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from" 5536 }, 5537 { 5538 "vuid": "VUID-vkCmdBeginRenderPass2-framebuffer-02533", 5539 "text": " For any attachment in <code>framebuffer</code> that is used by <code>renderPass</code> and is bound to memory locations that are also bound to another attachment used by <code>renderPass</code>, and if at least one of those uses causes either attachment to be written to, both attachments <strong class=\"purple\">must</strong> have had the <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> set" 5540 }, 5541 { 5542 "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04106", 5543 "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pInputAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> contain at least <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5544 }, 5545 { 5546 "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04107", 5547 "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pColorAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 5548 }, 5549 { 5550 "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04108", 5551 "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pResolveAttachments</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 5552 }, 5553 { 5554 "vuid": "VUID-vkCmdBeginRenderPass2-pAttachments-04109", 5555 "text": " Each element of the <code>pAttachments</code> of <code>framebuffer</code> that is referenced by any element of the <code>pDepthStencilAttachment</code> of any element of <code>pSubpasses</code> of <code>renderPass</code> <strong class=\"purple\">must</strong> have <a href=\"#resources-image-view-format-features\">image view format features</a> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5556 }, 5557 { 5558 "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-parameter", 5559 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 5560 }, 5561 { 5562 "vuid": "VUID-vkCmdBeginRenderPass2-pRenderPassBegin-parameter", 5563 "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a> structure" 5564 }, 5565 { 5566 "vuid": "VUID-vkCmdBeginRenderPass2-pSubpassBeginInfo-parameter", 5567 "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassBeginInfo\">VkSubpassBeginInfo</a> structure" 5568 }, 5569 { 5570 "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-recording", 5571 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 5572 }, 5573 { 5574 "vuid": "VUID-vkCmdBeginRenderPass2-commandBuffer-cmdpool", 5575 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 5576 }, 5577 { 5578 "vuid": "VUID-vkCmdBeginRenderPass2-renderpass", 5579 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 5580 }, 5581 { 5582 "vuid": "VUID-vkCmdBeginRenderPass2-bufferlevel", 5583 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 5584 } 5585 ], 5586 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 5587 { 5588 "vuid": "VUID-vkCmdBeginRenderPass2-initialLayout-02844", 5589 "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5590 }, 5591 { 5592 "vuid": "VUID-vkCmdBeginRenderPass2-stencilInitialLayout-02845", 5593 "text": " If any of the <code>stencilInitialLayout</code> or <code>stencilFinalLayout</code> member of the <code>VkAttachmentDescriptionStencilLayout</code> structures or the <code>stencilLayout</code> member of the <code>VkAttachmentReferenceStencilLayout</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 5594 } 5595 ] 5596 }, 5597 "VkRenderPassBeginInfo": { 5598 "core": [ 5599 { 5600 "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902", 5601 "text": " <code>clearValueCount</code> <strong class=\"purple\">must</strong> be greater than the largest attachment index in <code>renderPass</code> that specifies a <code>loadOp</code> (or <code>stencilLoadOp</code>, if the attachment has a depth/stencil format) of <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>" 5602 }, 5603 { 5604 "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904", 5605 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a> structure specified when creating <code>framebuffer</code>" 5606 }, 5607 { 5608 "vuid": "VUID-VkRenderPassBeginInfo-sType-sType", 5609 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>" 5610 }, 5611 { 5612 "vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext", 5613 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a>, <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>, or <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>" 5614 }, 5615 { 5616 "vuid": "VUID-VkRenderPassBeginInfo-sType-unique", 5617 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 5618 }, 5619 { 5620 "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter", 5621 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle" 5622 }, 5623 { 5624 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter", 5625 "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFramebuffer\">VkFramebuffer</a> handle" 5626 }, 5627 { 5628 "vuid": "VUID-VkRenderPassBeginInfo-pClearValues-parameter", 5629 "text": " If <code>clearValueCount</code> is not <code>0</code>, <code>pClearValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>clearValueCount</code> <a href=\"#VkClearValue\">VkClearValue</a> unions" 5630 }, 5631 { 5632 "vuid": "VUID-VkRenderPassBeginInfo-commonparent", 5633 "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 5634 } 5635 ], 5636 "!(VK_VERSION_1_1,VK_KHR_device_group)": [ 5637 { 5638 "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02846", 5639 "text": " <code>renderArea.offset.x</code> <strong class=\"purple\">must</strong> be greater than or equal to 0" 5640 }, 5641 { 5642 "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02847", 5643 "text": " <code>renderArea.offset.y</code> <strong class=\"purple\">must</strong> be greater than or equal to 0" 5644 }, 5645 { 5646 "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02848", 5647 "text": " <span class=\"eq\"><code>renderArea.offset.x</code> + <code>renderArea.offset.width</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>width</code> the <code>framebuffer</code> was created with" 5648 }, 5649 { 5650 "vuid": "VUID-VkRenderPassBeginInfo-renderArea-02849", 5651 "text": " <span class=\"eq\"><code>renderArea.offset.y</code> + <code>renderArea.offset.height</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>height</code> the <code>framebuffer</code> was created with" 5652 } 5653 ], 5654 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 5655 { 5656 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02850", 5657 "text": " If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.offset.x</code> <strong class=\"purple\">must</strong> be greater than or equal to 0" 5658 }, 5659 { 5660 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02851", 5661 "text": " If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <code>renderArea.offset.y</code> <strong class=\"purple\">must</strong> be greater than or equal to 0" 5662 }, 5663 { 5664 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02852", 5665 "text": " If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <span class=\"eq\"><code>renderArea.offset.x</code> + <code>renderArea.offset.width</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>width</code> the <code>framebuffer</code> was created with" 5666 }, 5667 { 5668 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02853", 5669 "text": " If the <code>pNext</code> chain does not contain <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or its <code>deviceRenderAreaCount</code> member is equal to 0, <span class=\"eq\"><code>renderArea.offset.y</code> + <code>renderArea.offset.height</code></span> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>height</code> the <code>framebuffer</code> was created with" 5670 }, 5671 { 5672 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02854", 5673 "text": " If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, the <code>offset.x</code> member of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be greater than or equal to 0" 5674 }, 5675 { 5676 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02855", 5677 "text": " If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, the <code>offset.y</code> member of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be greater than or equal to 0" 5678 }, 5679 { 5680 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02856", 5681 "text": " If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <span class=\"eq\"><code>offset.x</code> + <code>offset.width</code></span> of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>width</code> the <code>framebuffer</code> was created with" 5682 }, 5683 { 5684 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02857", 5685 "text": " If the <code>pNext</code> chain contains <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>, <span class=\"eq\"><code>offset.y</code> + <code>offset.height</code></span> of each element of <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>height</code> the <code>framebuffer</code> was created with" 5686 } 5687 ], 5688 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [ 5689 { 5690 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03207", 5691 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that did not include <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure, its <code>attachmentCount</code> <strong class=\"purple\">must</strong> be zero" 5692 }, 5693 { 5694 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03208", 5695 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, the <code>attachmentCount</code> of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be equal to the value of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>attachmentImageInfoCount</code> used to create <code>framebuffer</code>" 5696 }, 5697 { 5698 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-02780", 5699 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> have been created on the same <a href=\"#VkDevice\">VkDevice</a> as <code>framebuffer</code> and <code>renderPass</code>" 5700 }, 5701 { 5702 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03209", 5703 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> equal to the <code>flags</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>" 5704 }, 5705 { 5706 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03210", 5707 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> equal to the <code>usage</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>" 5708 }, 5709 { 5710 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03211", 5711 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> with a width equal to the <code>width</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>" 5712 }, 5713 { 5714 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03212", 5715 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> with a height equal to the <code>height</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>" 5716 }, 5717 { 5718 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03213", 5719 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>subresourceRange.layerCount</code> equal to the <code>layerCount</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>" 5720 }, 5721 { 5722 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03214", 5723 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> equal to the <code>viewFormatCount</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>" 5724 }, 5725 { 5726 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03215", 5727 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a set of elements in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> equal to the set of elements in the <code>pViewFormats</code> member of the corresponding element of <a href=\"#VkFramebufferAttachmentsCreateInfo\">VkFramebufferAttachmentsCreateInfo</a>::<code>pAttachments</code> used to create <code>framebuffer</code>" 5728 }, 5729 { 5730 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03216", 5731 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>format</code> equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>format</code> in <code>renderPass</code>" 5732 }, 5733 { 5734 "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-03217", 5735 "text": " If <code>framebuffer</code> was created with a <a href=\"#VkFramebufferCreateInfo\">VkFramebufferCreateInfo</a>::<code>flags</code> value that included <code>VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT</code>, each element of the <code>pAttachments</code> member of a <a href=\"#VkRenderPassAttachmentBeginInfo\">VkRenderPassAttachmentBeginInfo</a> structure included in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be a <a href=\"#VkImageView\">VkImageView</a> of an image created with a value of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>samples</code> equal to the corresponding value of <a href=\"#VkAttachmentDescription\">VkAttachmentDescription</a>::<code>samples</code> in <code>renderPass</code>" 5736 } 5737 ], 5738 "(VK_QCOM_render_pass_transform)": [ 5739 { 5740 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02869", 5741 "text": " If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea.offset</code> <strong class=\"purple\">must</strong> equal (0,0)" 5742 }, 5743 { 5744 "vuid": "VUID-VkRenderPassBeginInfo-pNext-02870", 5745 "text": " If the <code>pNext</code> chain includes <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>, <code>renderArea.extent</code> transformed by <a href=\"#VkRenderPassTransformBeginInfoQCOM\">VkRenderPassTransformBeginInfoQCOM</a>::<code>transform</code> <strong class=\"purple\">must</strong> equal the <code>framebuffer</code> dimensions" 5746 } 5747 ] 5748 }, 5749 "VkRenderPassSampleLocationsBeginInfoEXT": { 5750 "(VK_EXT_sample_locations)": [ 5751 { 5752 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType", 5753 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>" 5754 }, 5755 { 5756 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter", 5757 "text": " If <code>attachmentInitialSampleLocationsCount</code> is not <code>0</code>, <code>pAttachmentInitialSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentInitialSampleLocationsCount</code> valid <a href=\"#VkAttachmentSampleLocationsEXT\">VkAttachmentSampleLocationsEXT</a> structures" 5758 }, 5759 { 5760 "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter", 5761 "text": " If <code>postSubpassSampleLocationsCount</code> is not <code>0</code>, <code>pPostSubpassSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>postSubpassSampleLocationsCount</code> valid <a href=\"#VkSubpassSampleLocationsEXT\">VkSubpassSampleLocationsEXT</a> structures" 5762 } 5763 ] 5764 }, 5765 "VkAttachmentSampleLocationsEXT": { 5766 "(VK_EXT_sample_locations)": [ 5767 { 5768 "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531", 5769 "text": " <code>attachmentIndex</code> <strong class=\"purple\">must</strong> be less than the <code>attachmentCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with" 5770 }, 5771 { 5772 "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter", 5773 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure" 5774 } 5775 ] 5776 }, 5777 "VkSubpassSampleLocationsEXT": { 5778 "(VK_EXT_sample_locations)": [ 5779 { 5780 "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532", 5781 "text": " <code>subpassIndex</code> <strong class=\"purple\">must</strong> be less than the <code>subpassCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with" 5782 }, 5783 { 5784 "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter", 5785 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure" 5786 } 5787 ] 5788 }, 5789 "VkRenderPassTransformBeginInfoQCOM": { 5790 "(VK_QCOM_render_pass_transform)": [ 5791 { 5792 "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-transform-02871", 5793 "text": " <code>transform</code> <strong class=\"purple\">must</strong> be <code>VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR</code>, <code>VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR</code>, or <code>VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR</code>" 5794 }, 5795 { 5796 "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-flags-02872", 5797 "text": " The <code>renderpass</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a>::<code>flags</code> containing <code>VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM</code>" 5798 }, 5799 { 5800 "vuid": "VUID-VkRenderPassTransformBeginInfoQCOM-sType-sType", 5801 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM</code>" 5802 } 5803 ] 5804 }, 5805 "VkSubpassBeginInfo": { 5806 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 5807 { 5808 "vuid": "VUID-VkSubpassBeginInfo-sType-sType", 5809 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO</code>" 5810 }, 5811 { 5812 "vuid": "VUID-VkSubpassBeginInfo-pNext-pNext", 5813 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 5814 }, 5815 { 5816 "vuid": "VUID-VkSubpassBeginInfo-contents-parameter", 5817 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value" 5818 } 5819 ] 5820 }, 5821 "VkDeviceGroupRenderPassBeginInfo": { 5822 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 5823 { 5824 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905", 5825 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value" 5826 }, 5827 { 5828 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906", 5829 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 5830 }, 5831 { 5832 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907", 5833 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer’s initial device mask" 5834 }, 5835 { 5836 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908", 5837 "text": " <code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device" 5838 }, 5839 { 5840 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType", 5841 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>" 5842 }, 5843 { 5844 "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter", 5845 "text": " If <code>deviceRenderAreaCount</code> is not <code>0</code>, <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceRenderAreaCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 5846 } 5847 ] 5848 }, 5849 "VkRenderPassAttachmentBeginInfo": { 5850 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [ 5851 { 5852 "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03218", 5853 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level" 5854 }, 5855 { 5856 "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-03219", 5857 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle" 5858 }, 5859 { 5860 "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-04114", 5861 "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a>::<code>viewType</code> not equal to <code>VK_IMAGE_VIEW_TYPE_3D</code>" 5862 }, 5863 { 5864 "vuid": "VUID-VkRenderPassAttachmentBeginInfo-sType-sType", 5865 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO</code>" 5866 }, 5867 { 5868 "vuid": "VUID-VkRenderPassAttachmentBeginInfo-pAttachments-parameter", 5869 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkImageView\">VkImageView</a> handles" 5870 } 5871 ] 5872 }, 5873 "vkGetRenderAreaGranularity": { 5874 "core": [ 5875 { 5876 "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter", 5877 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 5878 }, 5879 { 5880 "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter", 5881 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle" 5882 }, 5883 { 5884 "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter", 5885 "text": " <code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExtent2D\">VkExtent2D</a> structure" 5886 }, 5887 { 5888 "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent", 5889 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 5890 } 5891 ] 5892 }, 5893 "vkCmdNextSubpass": { 5894 "core": [ 5895 { 5896 "vuid": "VUID-vkCmdNextSubpass-None-00909", 5897 "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one" 5898 }, 5899 { 5900 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter", 5901 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 5902 }, 5903 { 5904 "vuid": "VUID-vkCmdNextSubpass-contents-parameter", 5905 "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value" 5906 }, 5907 { 5908 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording", 5909 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 5910 }, 5911 { 5912 "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool", 5913 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 5914 }, 5915 { 5916 "vuid": "VUID-vkCmdNextSubpass-renderpass", 5917 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 5918 }, 5919 { 5920 "vuid": "VUID-vkCmdNextSubpass-bufferlevel", 5921 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 5922 } 5923 ], 5924 "(VK_EXT_transform_feedback)": [ 5925 { 5926 "vuid": "VUID-vkCmdNextSubpass-None-02349", 5927 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 5928 } 5929 ] 5930 }, 5931 "vkCmdNextSubpass2": { 5932 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 5933 { 5934 "vuid": "VUID-vkCmdNextSubpass2-None-03102", 5935 "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one" 5936 }, 5937 { 5938 "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-parameter", 5939 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 5940 }, 5941 { 5942 "vuid": "VUID-vkCmdNextSubpass2-pSubpassBeginInfo-parameter", 5943 "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassBeginInfo\">VkSubpassBeginInfo</a> structure" 5944 }, 5945 { 5946 "vuid": "VUID-vkCmdNextSubpass2-pSubpassEndInfo-parameter", 5947 "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassEndInfo\">VkSubpassEndInfo</a> structure" 5948 }, 5949 { 5950 "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-recording", 5951 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 5952 }, 5953 { 5954 "vuid": "VUID-vkCmdNextSubpass2-commandBuffer-cmdpool", 5955 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 5956 }, 5957 { 5958 "vuid": "VUID-vkCmdNextSubpass2-renderpass", 5959 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 5960 }, 5961 { 5962 "vuid": "VUID-vkCmdNextSubpass2-bufferlevel", 5963 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 5964 } 5965 ], 5966 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [ 5967 { 5968 "vuid": "VUID-vkCmdNextSubpass2-None-02350", 5969 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 5970 } 5971 ] 5972 }, 5973 "vkCmdEndRenderPass": { 5974 "core": [ 5975 { 5976 "vuid": "VUID-vkCmdEndRenderPass-None-00910", 5977 "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one" 5978 }, 5979 { 5980 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter", 5981 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 5982 }, 5983 { 5984 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording", 5985 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 5986 }, 5987 { 5988 "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool", 5989 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 5990 }, 5991 { 5992 "vuid": "VUID-vkCmdEndRenderPass-renderpass", 5993 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 5994 }, 5995 { 5996 "vuid": "VUID-vkCmdEndRenderPass-bufferlevel", 5997 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 5998 } 5999 ], 6000 "(VK_EXT_transform_feedback)": [ 6001 { 6002 "vuid": "VUID-vkCmdEndRenderPass-None-02351", 6003 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 6004 } 6005 ] 6006 }, 6007 "vkCmdEndRenderPass2": { 6008 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 6009 { 6010 "vuid": "VUID-vkCmdEndRenderPass2-None-03103", 6011 "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one" 6012 }, 6013 { 6014 "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-parameter", 6015 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 6016 }, 6017 { 6018 "vuid": "VUID-vkCmdEndRenderPass2-pSubpassEndInfo-parameter", 6019 "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSubpassEndInfo\">VkSubpassEndInfo</a> structure" 6020 }, 6021 { 6022 "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-recording", 6023 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 6024 }, 6025 { 6026 "vuid": "VUID-vkCmdEndRenderPass2-commandBuffer-cmdpool", 6027 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 6028 }, 6029 { 6030 "vuid": "VUID-vkCmdEndRenderPass2-renderpass", 6031 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 6032 }, 6033 { 6034 "vuid": "VUID-vkCmdEndRenderPass2-bufferlevel", 6035 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>" 6036 } 6037 ], 6038 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [ 6039 { 6040 "vuid": "VUID-vkCmdEndRenderPass2-None-02352", 6041 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 6042 } 6043 ] 6044 }, 6045 "VkSubpassEndInfo": { 6046 "(VK_VERSION_1_2,VK_KHR_create_renderpass2)": [ 6047 { 6048 "vuid": "VUID-VkSubpassEndInfo-sType-sType", 6049 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_END_INFO</code>" 6050 }, 6051 { 6052 "vuid": "VUID-VkSubpassEndInfo-pNext-pNext", 6053 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6054 } 6055 ] 6056 }, 6057 "vkCreateShaderModule": { 6058 "core": [ 6059 { 6060 "vuid": "VUID-vkCreateShaderModule-device-parameter", 6061 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 6062 }, 6063 { 6064 "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter", 6065 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkShaderModuleCreateInfo\">VkShaderModuleCreateInfo</a> structure" 6066 }, 6067 { 6068 "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter", 6069 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 6070 }, 6071 { 6072 "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter", 6073 "text": " <code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkShaderModule\">VkShaderModule</a> handle" 6074 } 6075 ] 6076 }, 6077 "VkShaderModuleCreateInfo": { 6078 "core": [ 6079 { 6080 "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085", 6081 "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0" 6082 }, 6083 { 6084 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089", 6085 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code" 6086 }, 6087 { 6088 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090", 6089 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> not declare any capability that is not supported by the API, as described by the <a href=\"#spirvenv-module-validation\">Capabilities</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix" 6090 }, 6091 { 6092 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091", 6093 "text": " If <code>pCode</code> declares any of the capabilities listed in the <a href=\"#spirvenv-capabilities-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied" 6094 }, 6095 { 6096 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-04146", 6097 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> not declare any SPIR-V extension that is not supported by the API, as described by the <a href=\"#spirvenv-extensions\">Extension</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix" 6098 }, 6099 { 6100 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-04147", 6101 "text": " If <code>pCode</code> declares any of the SPIR-V extensions listed in the <a href=\"#spirvenv-extensions-table\">SPIR-V Environment</a> appendix, one of the corresponding requirements <strong class=\"purple\">must</strong> be satisfied" 6102 }, 6103 { 6104 "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType", 6105 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>" 6106 }, 6107 { 6108 "vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext", 6109 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkShaderModuleValidationCacheCreateInfoEXT\">VkShaderModuleValidationCacheCreateInfoEXT</a>" 6110 }, 6111 { 6112 "vuid": "VUID-VkShaderModuleCreateInfo-sType-unique", 6113 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 6114 }, 6115 { 6116 "vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask", 6117 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 6118 }, 6119 { 6120 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter", 6121 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\textrm{codeSize} \\over 4\\) <code>uint32_t</code> values" 6122 } 6123 ], 6124 "!(VK_NV_glsl_shader)": [ 6125 { 6126 "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086", 6127 "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4" 6128 }, 6129 { 6130 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087", 6131 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a>" 6132 }, 6133 { 6134 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088", 6135 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix" 6136 } 6137 ], 6138 "(VK_NV_glsl_shader)": [ 6139 { 6140 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376", 6141 "text": " If <code>pCode</code> is a pointer to SPIR-V code, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4" 6142 }, 6143 { 6144 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377", 6145 "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to either valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> or valid GLSL code which <strong class=\"purple\">must</strong> be written to the <code>GL_KHR_vulkan_glsl</code> extension specification" 6146 }, 6147 { 6148 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378", 6149 "text": " If <code>pCode</code> is a pointer to SPIR-V code, that code <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix" 6150 }, 6151 { 6152 "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379", 6153 "text": " If <code>pCode</code> is a pointer to GLSL code, it <strong class=\"purple\">must</strong> be valid GLSL code written to the <code>GL_KHR_vulkan_glsl</code> GLSL extension specification" 6154 } 6155 ] 6156 }, 6157 "VkShaderModuleValidationCacheCreateInfoEXT": { 6158 "(VK_EXT_validation_cache)": [ 6159 { 6160 "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType", 6161 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>" 6162 }, 6163 { 6164 "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter", 6165 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle" 6166 } 6167 ] 6168 }, 6169 "vkDestroyShaderModule": { 6170 "core": [ 6171 { 6172 "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092", 6173 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 6174 }, 6175 { 6176 "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093", 6177 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6178 }, 6179 { 6180 "vuid": "VUID-vkDestroyShaderModule-device-parameter", 6181 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 6182 }, 6183 { 6184 "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter", 6185 "text": " If <code>shaderModule</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shaderModule</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a> handle" 6186 }, 6187 { 6188 "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter", 6189 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 6190 }, 6191 { 6192 "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent", 6193 "text": " If <code>shaderModule</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6194 } 6195 ] 6196 }, 6197 "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": { 6198 "(VK_NV_cooperative_matrix)": [ 6199 { 6200 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter", 6201 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 6202 }, 6203 { 6204 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter", 6205 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 6206 }, 6207 { 6208 "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter", 6209 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkCooperativeMatrixPropertiesNV\">VkCooperativeMatrixPropertiesNV</a> structures" 6210 } 6211 ] 6212 }, 6213 "VkCooperativeMatrixPropertiesNV": { 6214 "(VK_NV_cooperative_matrix)": [ 6215 { 6216 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType", 6217 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>" 6218 }, 6219 { 6220 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext", 6221 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6222 }, 6223 { 6224 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter", 6225 "text": " <code>AType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value" 6226 }, 6227 { 6228 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter", 6229 "text": " <code>BType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value" 6230 }, 6231 { 6232 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter", 6233 "text": " <code>CType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value" 6234 }, 6235 { 6236 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter", 6237 "text": " <code>DType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value" 6238 }, 6239 { 6240 "vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter", 6241 "text": " <code>scope</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkScopeNV\">VkScopeNV</a> value" 6242 } 6243 ] 6244 }, 6245 "vkCreateValidationCacheEXT": { 6246 "(VK_EXT_validation_cache)": [ 6247 { 6248 "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter", 6249 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 6250 }, 6251 { 6252 "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter", 6253 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkValidationCacheCreateInfoEXT\">VkValidationCacheCreateInfoEXT</a> structure" 6254 }, 6255 { 6256 "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter", 6257 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 6258 }, 6259 { 6260 "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter", 6261 "text": " <code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle" 6262 } 6263 ] 6264 }, 6265 "VkValidationCacheCreateInfoEXT": { 6266 "(VK_EXT_validation_cache)": [ 6267 { 6268 "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534", 6269 "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetValidationCacheDataEXT</code> when <code>pInitialData</code> was originally retrieved" 6270 }, 6271 { 6272 "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535", 6273 "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetValidationCacheDataEXT</code>" 6274 }, 6275 { 6276 "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType", 6277 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>" 6278 }, 6279 { 6280 "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext", 6281 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6282 }, 6283 { 6284 "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask", 6285 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 6286 }, 6287 { 6288 "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter", 6289 "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes" 6290 } 6291 ] 6292 }, 6293 "vkMergeValidationCachesEXT": { 6294 "(VK_EXT_validation_cache)": [ 6295 { 6296 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536", 6297 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches" 6298 }, 6299 { 6300 "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter", 6301 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 6302 }, 6303 { 6304 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter", 6305 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle" 6306 }, 6307 { 6308 "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter", 6309 "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handles" 6310 }, 6311 { 6312 "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength", 6313 "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 6314 }, 6315 { 6316 "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent", 6317 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6318 }, 6319 { 6320 "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent", 6321 "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6322 } 6323 ] 6324 }, 6325 "vkGetValidationCacheDataEXT": { 6326 "(VK_EXT_validation_cache)": [ 6327 { 6328 "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter", 6329 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 6330 }, 6331 { 6332 "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter", 6333 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle" 6334 }, 6335 { 6336 "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter", 6337 "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value" 6338 }, 6339 { 6340 "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter", 6341 "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes" 6342 }, 6343 { 6344 "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent", 6345 "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6346 } 6347 ] 6348 }, 6349 "vkDestroyValidationCacheEXT": { 6350 "(VK_EXT_validation_cache)": [ 6351 { 6352 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537", 6353 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 6354 }, 6355 { 6356 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538", 6357 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 6358 }, 6359 { 6360 "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter", 6361 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 6362 }, 6363 { 6364 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter", 6365 "text": " If <code>validationCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkValidationCacheEXT\">VkValidationCacheEXT</a> handle" 6366 }, 6367 { 6368 "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter", 6369 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 6370 }, 6371 { 6372 "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent", 6373 "text": " If <code>validationCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6374 } 6375 ] 6376 }, 6377 "vkCreateComputePipelines": { 6378 "core": [ 6379 { 6380 "vuid": "VUID-vkCreateComputePipelines-flags-00695", 6381 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" 6382 }, 6383 { 6384 "vuid": "VUID-vkCreateComputePipelines-flags-00696", 6385 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" 6386 }, 6387 { 6388 "vuid": "VUID-vkCreateComputePipelines-device-parameter", 6389 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 6390 }, 6391 { 6392 "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter", 6393 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle" 6394 }, 6395 { 6396 "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter", 6397 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a> structures" 6398 }, 6399 { 6400 "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter", 6401 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 6402 }, 6403 { 6404 "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter", 6405 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles" 6406 }, 6407 { 6408 "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength", 6409 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 6410 }, 6411 { 6412 "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent", 6413 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6414 } 6415 ], 6416 "(VK_EXT_pipeline_creation_cache_control)": [ 6417 { 6418 "vuid": "VUID-vkCreateComputePipelines-pipelineCache-02873", 6419 "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" 6420 } 6421 ] 6422 }, 6423 "VkComputePipelineCreateInfo": { 6424 "core": [ 6425 { 6426 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697", 6427 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a compute <code>VkPipeline</code>" 6428 }, 6429 { 6430 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698", 6431 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" 6432 }, 6433 { 6434 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699", 6435 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 6436 }, 6437 { 6438 "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700", 6439 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1" 6440 }, 6441 { 6442 "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701", 6443 "text": " The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>" 6444 }, 6445 { 6446 "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702", 6447 "text": " The shader code for the entry point identified by <code>stage</code> and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" 6448 }, 6449 { 6450 "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703", 6451 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with the layout of the compute shader specified in <code>stage</code>" 6452 }, 6453 { 6454 "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687", 6455 "text": " The number of resources in <code>layout</code> accessible to the compute shader stage <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>" 6456 }, 6457 { 6458 "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType", 6459 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>" 6460 }, 6461 { 6462 "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext", 6463 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCompilerControlCreateInfoAMD\">VkPipelineCompilerControlCreateInfoAMD</a> or <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>" 6464 }, 6465 { 6466 "vuid": "VUID-VkComputePipelineCreateInfo-sType-unique", 6467 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 6468 }, 6469 { 6470 "vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter", 6471 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values" 6472 }, 6473 { 6474 "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter", 6475 "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structure" 6476 }, 6477 { 6478 "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter", 6479 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 6480 }, 6481 { 6482 "vuid": "VUID-VkComputePipelineCreateInfo-commonparent", 6483 "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 6484 } 6485 ], 6486 "(VK_KHR_pipeline_library)": [ 6487 { 6488 "vuid": "VUID-VkComputePipelineCreateInfo-flags-03364", 6489 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>" 6490 } 6491 ], 6492 "(VK_KHR_ray_tracing)": [ 6493 { 6494 "vuid": "VUID-VkComputePipelineCreateInfo-flags-03365", 6495 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>" 6496 }, 6497 { 6498 "vuid": "VUID-VkComputePipelineCreateInfo-flags-03366", 6499 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>" 6500 }, 6501 { 6502 "vuid": "VUID-VkComputePipelineCreateInfo-flags-03367", 6503 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>" 6504 }, 6505 { 6506 "vuid": "VUID-VkComputePipelineCreateInfo-flags-03368", 6507 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>" 6508 }, 6509 { 6510 "vuid": "VUID-VkComputePipelineCreateInfo-flags-03369", 6511 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>" 6512 }, 6513 { 6514 "vuid": "VUID-VkComputePipelineCreateInfo-flags-03370", 6515 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>" 6516 } 6517 ], 6518 "(VK_NV_device_generated_commands)": [ 6519 { 6520 "vuid": "VUID-VkComputePipelineCreateInfo-flags-02874", 6521 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>" 6522 } 6523 ], 6524 "(VK_EXT_pipeline_creation_cache_control)": [ 6525 { 6526 "vuid": "VUID-VkComputePipelineCreateInfo-pipelineCreationCacheControl-02875", 6527 "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>" 6528 } 6529 ] 6530 }, 6531 "VkPipelineShaderStageCreateInfo": { 6532 "core": [ 6533 { 6534 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704", 6535 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>" 6536 }, 6537 { 6538 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705", 6539 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>" 6540 }, 6541 { 6542 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706", 6543 "text": " <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_ALL_GRAPHICS</code>, or <code>VK_SHADER_STAGE_ALL</code>" 6544 }, 6545 { 6546 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707", 6547 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in <code>module</code> with an execution model that matches <code>stage</code>" 6548 }, 6549 { 6550 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708", 6551 "text": " If the identified entry point includes any variable in its interface that is declared with the <code>ClipDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxClipDistances</code>" 6552 }, 6553 { 6554 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709", 6555 "text": " If the identified entry point includes any variable in its interface that is declared with the <code>CullDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxCullDistances</code>" 6556 }, 6557 { 6558 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710", 6559 "text": " If the identified entry point includes any variables in its interface that are declared with the <code>ClipDistance</code> or <code>CullDistance</code> <code>BuiltIn</code> decoration, those variables <strong class=\"purple\">must</strong> not have array sizes which sum to more than <code>VkPhysicalDeviceLimits</code>::<code>maxCombinedClipAndCullDistances</code>" 6560 }, 6561 { 6562 "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711", 6563 "text": " If the identified entry point includes any variable in its interface that is declared with the <code>SampleMask</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxSampleMaskWords</code>" 6564 }, 6565 { 6566 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712", 6567 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any input variable in its interface that is decorated with <code>CullDistance</code>" 6568 }, 6569 { 6570 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713", 6571 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, and the identified entry point has an <code>OpExecutionMode</code> instruction that specifies a patch size with <code>OutputVertices</code>, the patch size <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>" 6572 }, 6573 { 6574 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714", 6575 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryOutputVertices</code>" 6576 }, 6577 { 6578 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715", 6579 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies an invocation count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryShaderInvocations</code>" 6580 }, 6581 { 6582 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596", 6583 "text": " If <code>stage</code> is a vertex processing stage, and the identified entry point writes to <code>Layer</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>Layer</code> for all vertices of a given primitive" 6584 }, 6585 { 6586 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597", 6587 "text": " If <code>stage</code> is a vertex processing stage, and the identified entry point writes to <code>ViewportIndex</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>ViewportIndex</code> for all vertices of a given primitive" 6588 }, 6589 { 6590 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718", 6591 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any output variables in its interface decorated with <code>CullDistance</code>" 6592 }, 6593 { 6594 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719", 6595 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragDepth</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragDepth</code> in all execution paths" 6596 }, 6597 { 6598 "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-04145", 6599 "text": " The SPIR-V code that was used to create <code>module</code> <strong class=\"purple\">must</strong> be valid as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> after applying the specializations provided in <code>pSpecializationInfo</code>, if any, and then converting all specialization constants into fixed constants." 6600 }, 6601 { 6602 "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType", 6603 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>" 6604 }, 6605 { 6606 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext", 6607 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a>" 6608 }, 6609 { 6610 "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-unique", 6611 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 6612 }, 6613 { 6614 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-parameter", 6615 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineShaderStageCreateFlagBits\">VkPipelineShaderStageCreateFlagBits</a> values" 6616 }, 6617 { 6618 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter", 6619 "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value" 6620 }, 6621 { 6622 "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter", 6623 "text": " <code>module</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderModule\">VkShaderModule</a> handle" 6624 }, 6625 { 6626 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter", 6627 "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 6628 }, 6629 { 6630 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter", 6631 "text": " If <code>pSpecializationInfo</code> is not <code>NULL</code>, <code>pSpecializationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSpecializationInfo\">VkSpecializationInfo</a> structure" 6632 } 6633 ], 6634 "(VK_NV_mesh_shader)": [ 6635 { 6636 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091", 6637 "text": " If the <a href=\"#features-meshShader\">mesh shader</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_MESH_BIT_NV</code>" 6638 }, 6639 { 6640 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092", 6641 "text": " If the <a href=\"#features-taskShader\">task shader</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TASK_BIT_NV</code>" 6642 }, 6643 { 6644 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02093", 6645 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_NV</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count, <code>OutputVertices</code>, that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxMeshOutputVertices</code>" 6646 }, 6647 { 6648 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02094", 6649 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_NV</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output primitive count, <code>OutputPrimitivesNV</code>, that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxMeshOutputPrimitives</code>" 6650 } 6651 ], 6652 "(VK_EXT_shader_stencil_export)": [ 6653 { 6654 "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511", 6655 "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragStencilRefEXT</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragStencilRefEXT</code> in all execution paths" 6656 } 6657 ], 6658 "(VK_EXT_subgroup_size_control)": [ 6659 { 6660 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02784", 6661 "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flag set, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled" 6662 }, 6663 { 6664 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02785", 6665 "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> flag set, the <a href=\"#features-computeFullSubgroups\"><code>computeFullSubgroups</code></a> feature <strong class=\"purple\">must</strong> be enabled" 6666 }, 6667 { 6668 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02754", 6669 "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, <code>flags</code> <strong class=\"purple\">must</strong> not have the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flag set" 6670 }, 6671 { 6672 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02755", 6673 "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, the <a href=\"#features-subgroupSizeControl\"><code>subgroupSizeControl</code></a> feature <strong class=\"purple\">must</strong> be enabled, and <code>stage</code> <strong class=\"purple\">must</strong> be a valid bit specified in <a href=\"#limits-required-subgroup-size-stages\"><code>requiredSubgroupSizeStages</code></a>" 6674 }, 6675 { 6676 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02756", 6677 "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain and <code>stage</code> is <code>VK_SHADER_STAGE_COMPUTE_BIT</code>, the local workgroup size of the shader <strong class=\"purple\">must</strong> be less than or equal to the product of <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a>::<code>requiredSubgroupSize</code> and <a href=\"#limits-max-subgroups-per-workgroup\"><code>maxComputeWorkgroupSubgroups</code></a>" 6678 }, 6679 { 6680 "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-02757", 6681 "text": " If a <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, and <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> flag set, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a>::<code>requiredSubgroupSize</code>" 6682 }, 6683 { 6684 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02758", 6685 "text": " If <code>flags</code> has both the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> and <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flags set, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-max-subgroup-size\"><code>maxSubgroupSize</code></a>" 6686 }, 6687 { 6688 "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-02759", 6689 "text": " If <code>flags</code> has the <code>VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT</code> flag set and <code>flags</code> does not have the <code>VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT</code> flag set and no <a href=\"#VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT\">VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT</a> structure is included in the <code>pNext</code> chain, the local workgroup size in the X dimension of the pipeline <strong class=\"purple\">must</strong> be a multiple of <a href=\"#limits-subgroup-size\"><code>subgroupSize</code></a>" 6690 } 6691 ] 6692 }, 6693 "VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT": { 6694 "(VK_EXT_subgroup_size_control)": [ 6695 { 6696 "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02760", 6697 "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be a power-of-two integer" 6698 }, 6699 { 6700 "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02761", 6701 "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be greater or equal to <a href=\"#limits-min-subgroup-size\">minSubgroupSize</a>" 6702 }, 6703 { 6704 "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-requiredSubgroupSize-02762", 6705 "text": " <code>requiredSubgroupSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-max-subgroup-size\">maxSubgroupSize</a>" 6706 }, 6707 { 6708 "vuid": "VUID-VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT-sType-sType", 6709 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT</code>" 6710 } 6711 ] 6712 }, 6713 "vkCreateGraphicsPipelines": { 6714 "core": [ 6715 { 6716 "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720", 6717 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" 6718 }, 6719 { 6720 "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721", 6721 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" 6722 }, 6723 { 6724 "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter", 6725 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 6726 }, 6727 { 6728 "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter", 6729 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle" 6730 }, 6731 { 6732 "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter", 6733 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> structures" 6734 }, 6735 { 6736 "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter", 6737 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 6738 }, 6739 { 6740 "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter", 6741 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles" 6742 }, 6743 { 6744 "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength", 6745 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 6746 }, 6747 { 6748 "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent", 6749 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 6750 } 6751 ], 6752 "(VK_EXT_pipeline_creation_cache_control)": [ 6753 { 6754 "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-02876", 6755 "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" 6756 } 6757 ] 6758 }, 6759 "VkGraphicsPipelineCreateInfo": { 6760 "core": [ 6761 { 6762 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722", 6763 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a graphics <code>VkPipeline</code>" 6764 }, 6765 { 6766 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723", 6767 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" 6768 }, 6769 { 6770 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724", 6771 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 6772 }, 6773 { 6774 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725", 6775 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1" 6776 }, 6777 { 6778 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726", 6779 "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique" 6780 }, 6781 { 6782 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728", 6783 "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>" 6784 }, 6785 { 6786 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729", 6787 "text": " If <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage" 6788 }, 6789 { 6790 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730", 6791 "text": " If <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage" 6792 }, 6793 { 6794 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731", 6795 "text": " If <code>pStages</code> includes a tessellation control shader stage and a tessellation evaluation shader stage, <code>pTessellationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineTessellationStateCreateInfo\">VkPipelineTessellationStateCreateInfo</a> structure" 6796 }, 6797 { 6798 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732", 6799 "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline" 6800 }, 6801 { 6802 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733", 6803 "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both stages contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline, they <strong class=\"purple\">must</strong> both specify the same subdivision mode" 6804 }, 6805 { 6806 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734", 6807 "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the output patch size in the pipeline" 6808 }, 6809 { 6810 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735", 6811 "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both contain an <code>OpExecutionMode</code> instruction that specifies the out patch size in the pipeline, they <strong class=\"purple\">must</strong> both specify the same patch size" 6812 }, 6813 { 6814 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736", 6815 "text": " If <code>pStages</code> includes tessellation shader stages, the <code>topology</code> member of <code>pInputAssembly</code> <strong class=\"purple\">must</strong> be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>" 6816 }, 6817 { 6818 "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737", 6819 "text": " If the <code>topology</code> member of <code>pInputAssembly</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>pStages</code> <strong class=\"purple\">must</strong> include tessellation shader stages" 6820 }, 6821 { 6822 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738", 6823 "text": " If <code>pStages</code> includes a geometry shader stage, and does not include any tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology specified in <code>pInputAssembly</code>" 6824 }, 6825 { 6826 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739", 6827 "text": " If <code>pStages</code> includes a geometry shader stage, and also includes tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology that is output by the tessellation stages" 6828 }, 6829 { 6830 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740", 6831 "text": " If <code>pStages</code> includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with <code>PrimitiveID</code>, then the geometry shader code <strong class=\"purple\">must</strong> write to a matching output variable, decorated with <code>PrimitiveID</code>, in all execution paths" 6832 }, 6833 { 6834 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741", 6835 "text": " If <code>pStages</code> includes a fragment shader stage, its shader code <strong class=\"purple\">must</strong> not read from any input attachment that is defined as <code>VK_ATTACHMENT_UNUSED</code> in <code>subpass</code>" 6836 }, 6837 { 6838 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742", 6839 "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" 6840 }, 6841 { 6842 "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023", 6843 "text": " If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the <code>blendEnable</code> member of the corresponding element of the <code>pAttachment</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code> if the attached image’s <a href=\"#resources-image-format-features\">format features</a> does not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>" 6844 }, 6845 { 6846 "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746", 6847 "text": " If rasterization is not disabled and the subpass uses color attachments, the <code>attachmentCount</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be equal to the <code>colorAttachmentCount</code> used to create <code>subpass</code>" 6848 }, 6849 { 6850 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749", 6851 "text": " If the wide lines feature is not enabled, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_LINE_WIDTH</code>, the <code>lineWidth</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>1.0</code>" 6852 }, 6853 { 6854 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750", 6855 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a> structure" 6856 }, 6857 { 6858 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751", 6859 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure" 6860 }, 6861 { 6862 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752", 6863 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses a depth/stencil attachment, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a> structure" 6864 }, 6865 { 6866 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753", 6867 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses color attachments, <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineColorBlendStateCreateInfo\">VkPipelineColorBlendStateCreateInfo</a> structure" 6868 }, 6869 { 6870 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-04493", 6871 "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pColorBlendState->attachmentCount</code> <strong class=\"purple\">must</strong> be greater than the index of all color attachments that are not <code>VK_ATTACHMENT_UNUSED</code> for the <code>subpass</code> index in <code>renderPass</code>" 6872 }, 6873 { 6874 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754", 6875 "text": " If the depth bias clamping feature is not enabled, no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code>, and the <code>depthBiasEnable</code> member of <code>pRasterizationState</code> is <code>VK_TRUE</code>, the <code>depthBiasClamp</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>0.0</code>" 6876 }, 6877 { 6878 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756", 6879 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>" 6880 }, 6881 { 6882 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757", 6883 "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count for those subpass attachments" 6884 }, 6885 { 6886 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758", 6887 "text": " If <code>subpass</code> does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>" 6888 }, 6889 { 6890 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759", 6891 "text": " <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>" 6892 }, 6893 { 6894 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688", 6895 "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>" 6896 }, 6897 { 6898 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097", 6899 "text": " If <code>pStages</code> includes a vertex shader stage, <code>pVertexInputState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineVertexInputStateCreateInfo\">VkPipelineVertexInputStateCreateInfo</a> structure" 6900 }, 6901 { 6902 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098", 6903 "text": " If <code>pStages</code> includes a vertex shader stage, <code>pInputAssemblyState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a> structure" 6904 }, 6905 { 6906 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType", 6907 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>" 6908 }, 6909 { 6910 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext", 6911 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>, <a href=\"#VkPipelineCompilerControlCreateInfoAMD\">VkPipelineCompilerControlCreateInfoAMD</a>, <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>, <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>, or <a href=\"#VkPipelineRepresentativeFragmentTestStateCreateInfoNV\">VkPipelineRepresentativeFragmentTestStateCreateInfoNV</a>" 6912 }, 6913 { 6914 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique", 6915 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 6916 }, 6917 { 6918 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter", 6919 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values" 6920 }, 6921 { 6922 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter", 6923 "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures" 6924 }, 6925 { 6926 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter", 6927 "text": " <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineRasterizationStateCreateInfo\">VkPipelineRasterizationStateCreateInfo</a> structure" 6928 }, 6929 { 6930 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter", 6931 "text": " If <code>pDynamicState</code> is not <code>NULL</code>, <code>pDynamicState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineDynamicStateCreateInfo\">VkPipelineDynamicStateCreateInfo</a> structure" 6932 }, 6933 { 6934 "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter", 6935 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 6936 }, 6937 { 6938 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter", 6939 "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRenderPass\">VkRenderPass</a> handle" 6940 }, 6941 { 6942 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength", 6943 "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 6944 }, 6945 { 6946 "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent", 6947 "text": " Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 6948 } 6949 ], 6950 "!(VK_NV_mesh_shader)": [ 6951 { 6952 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727", 6953 "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_VERTEX_BIT</code>" 6954 } 6955 ], 6956 "(VK_NV_mesh_shader)": [ 6957 { 6958 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095", 6959 "text": " The geometric shader stages provided in <code>pStages</code> <strong class=\"purple\">must</strong> be either from the mesh shading pipeline (<code>stage</code> is <code>VK_SHADER_STAGE_TASK_BIT_NV</code> or <code>VK_SHADER_STAGE_MESH_BIT_NV</code>) or from the primitive shading pipeline (<code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>)" 6960 }, 6961 { 6962 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096", 6963 "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_NV</code>" 6964 } 6965 ], 6966 "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 6967 { 6968 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743", 6969 "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 6970 }, 6971 { 6972 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744", 6973 "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>" 6974 } 6975 ], 6976 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 6977 { 6978 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756", 6979 "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 6980 }, 6981 { 6982 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757", 6983 "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>" 6984 } 6985 ], 6986 "!(VK_EXT_extended_dynamic_state)": [ 6987 { 6988 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747", 6989 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code>, the <code>pViewports</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState->viewportCount</code> valid <code>VkViewport</code> structures" 6990 }, 6991 { 6992 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748", 6993 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code>, the <code>pScissors</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState->scissorCount</code> <code>VkRect2D</code> structures" 6994 } 6995 ], 6996 "(VK_EXT_extended_dynamic_state)": [ 6997 { 6998 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04130", 6999 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code> or <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code>, the <code>pViewports</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState->viewportCount</code> valid <code>VkViewport</code> structures" 7000 }, 7001 { 7002 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04131", 7003 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code> or <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code>, the <code>pScissors</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState->scissorCount</code> <code>VkRect2D</code> structures" 7004 }, 7005 { 7006 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03378", 7007 "text": " If the <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature is not enabled, there <strong class=\"purple\">must</strong> be no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> set to <code>VK_DYNAMIC_STATE_CULL_MODE_EXT</code>, <code>VK_DYNAMIC_STATE_FRONT_FACE_EXT</code>, <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code>, <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code>, <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code>, <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code>, <code>VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT</code>, <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT</code>, <code>VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT</code>, or <code>VK_DYNAMIC_STATE_STENCIL_OP_EXT</code>" 7008 }, 7009 { 7010 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03379", 7011 "text": " If <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> is included in the <code>pDynamicStates</code> array then <code>viewportCount</code> <strong class=\"purple\">must</strong> be zero" 7012 }, 7013 { 7014 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-03380", 7015 "text": " If <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> is included in the <code>pDynamicStates</code> array then <code>scissorCount</code> <strong class=\"purple\">must</strong> be zero" 7016 }, 7017 { 7018 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04132", 7019 "text": " If <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> is included in the <code>pDynamicStates</code> array then <code>VK_DYNAMIC_STATE_VIEWPORT</code> <strong class=\"purple\">must</strong> not be present" 7020 }, 7021 { 7022 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04133", 7023 "text": " If <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> is included in the <code>pDynamicStates</code> array then <code>VK_DYNAMIC_STATE_SCISSOR</code> <strong class=\"purple\">must</strong> not be present" 7024 } 7025 ], 7026 "!(VK_EXT_depth_range_unrestricted)": [ 7027 { 7028 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755", 7029 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 7030 } 7031 ], 7032 "(VK_EXT_depth_range_unrestricted)": [ 7033 { 7034 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510", 7035 "text": " If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 7036 } 7037 ], 7038 "(VK_EXT_sample_locations)": [ 7039 { 7040 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521", 7041 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure included in the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>" 7042 }, 7043 { 7044 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522", 7045 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure included in the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>" 7046 }, 7047 { 7048 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523", 7049 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure included in the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>" 7050 }, 7051 { 7052 "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524", 7053 "text": " If the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure included in the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>" 7054 } 7055 ], 7056 "(VK_AMD_mixed_attachment_samples)": [ 7057 { 7058 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505", 7059 "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and if <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> equal the maximum of the sample counts of those subpass attachments" 7060 } 7061 ], 7062 "(VK_NV_framebuffer_mixed_samples)": [ 7063 { 7064 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411", 7065 "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if <code>subpass</code> has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment" 7066 }, 7067 { 7068 "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412", 7069 "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if <code>subpass</code> has any color attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be greater than or equal to the sample count for those subpass attachments" 7070 } 7071 ], 7072 "(VK_NV_coverage_reduction_mode)": [ 7073 { 7074 "vuid": "VUID-VkGraphicsPipelineCreateInfo-coverageReductionMode-02722", 7075 "text": " If the <code>VK_NV_coverage_reduction_mode</code> extension is enabled, the coverage reduction mode specified by <a href=\"#VkPipelineCoverageReductionStateCreateInfoNV\">VkPipelineCoverageReductionStateCreateInfoNV</a>::<code>coverageReductionMode</code>, the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> and the sample counts for the color and depth/stencil attachments (if the subpass has them) <strong class=\"purple\">must</strong> be a valid combination returned by <code>vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV</code>" 7076 } 7077 ], 7078 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 7079 { 7080 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760", 7081 "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewTessellationShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include tessellation shaders" 7082 }, 7083 { 7084 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761", 7085 "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewGeometryShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a geometry shader" 7086 }, 7087 { 7088 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762", 7089 "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask, shaders in the pipeline <strong class=\"purple\">must</strong> not write to the <code>Layer</code> built-in output" 7090 }, 7091 { 7092 "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763", 7093 "text": " If the <code>renderPass</code> has multiview enabled, then all shaders <strong class=\"purple\">must</strong> not include variables decorated with the <code>Layer</code> built-in decoration in their interfaces" 7094 } 7095 ], 7096 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 7097 { 7098 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764", 7099 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag" 7100 } 7101 ], 7102 "(VK_VERSION_1_1,VK_KHR_maintenance2,VK_KHR_create_renderpass2)": [ 7103 { 7104 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565", 7105 "text": " If <code>pStages</code> includes a fragment shader stage and an input attachment was referenced by an <code>aspectMask</code> at <code>renderPass</code> creation time, its shader code <strong class=\"purple\">must</strong> only read from the aspects that were specified for that input attachment" 7106 } 7107 ], 7108 "(VK_NV_clip_space_w_scaling)": [ 7109 { 7110 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715", 7111 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code>, and the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure, included in the <code>pNext</code> chain of <code>pViewportState</code>, is <code>VK_TRUE</code>, the <code>pViewportWScalings</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> <strong class=\"purple\">must</strong> be a pointer to an array of <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> valid <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures" 7112 } 7113 ], 7114 "(VK_NV_scissor_exclusive)": [ 7115 { 7116 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056", 7117 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code>, and if <code>pViewportState->pNext</code> chain includes a <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> structure, and if its <code>exclusiveScissorCount</code> member is not <code>0</code>, then its <code>pExclusiveScissors</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 7118 } 7119 ], 7120 "(VK_NV_shading_rate_image)": [ 7121 { 7122 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057", 7123 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code>, and if <code>pViewportState->pNext</code> chain includes a <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a> structure, then its <code>pShadingRatePalettes</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkShadingRatePaletteNV\">VkShadingRatePaletteNV</a> structures" 7124 } 7125 ], 7126 "(VK_EXT_discard_rectangles)": [ 7127 { 7128 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058", 7129 "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code>, and if <code>pNext</code> chain includes a <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a> structure, and if its <code>discardRectangleCount</code> member is not <code>0</code>, then its <code>pDiscardRectangles</code> member <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 7130 } 7131 ], 7132 "(VK_EXT_transform_feedback)": [ 7133 { 7134 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317", 7135 "text": " The <code>Xfb</code> execution mode <strong class=\"purple\">can</strong> be specified by only one shader stage in <code>pStages</code>" 7136 }, 7137 { 7138 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318", 7139 "text": " If any shader stage in <code>pStages</code> specifies <code>Xfb</code> execution mode it <strong class=\"purple\">must</strong> be the last vertex processing stage" 7140 }, 7141 { 7142 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319", 7143 "text": " If a <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>::<code>rasterizationStream</code> value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with identical <code>Stream</code> values that match the <code>rasterizationStream</code>" 7144 }, 7145 { 7146 "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320", 7147 "text": " If <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>::<code>rasterizationStream</code> is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with a <code>Stream</code> value of zero, or <strong class=\"purple\">must</strong> not specify the <code>Stream</code> decoration" 7148 }, 7149 { 7150 "vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321", 7151 "text": " If the last vertex processing stage is a geometry shader, and that geometry shader uses the <code>GeometryStreams</code> capability, then <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> feature <strong class=\"purple\">must</strong> be enabled" 7152 } 7153 ], 7154 "(VK_EXT_transform_feedback)+(VK_NV_mesh_shader)": [ 7155 { 7156 "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322", 7157 "text": " If there are any mesh shader stages in the pipeline there <strong class=\"purple\">must</strong> not be any shader stage in the pipeline with a <code>Xfb</code> execution mode" 7158 } 7159 ], 7160 "(VK_EXT_line_rasterization)": [ 7161 { 7162 "vuid": "VUID-VkGraphicsPipelineCreateInfo-lineRasterizationMode-02766", 7163 "text": " If the <code>lineRasterizationMode</code> member of a <a href=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a> structure included in the <code>pNext</code> chain of <code>pRasterizationState</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT</code> or <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT</code> and if rasterization is enabled, then the <code>alphaToCoverageEnable</code>, <code>alphaToOneEnable</code>, and <code>sampleShadingEnable</code> members of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> all be <code>VK_FALSE</code>" 7164 }, 7165 { 7166 "vuid": "VUID-VkGraphicsPipelineCreateInfo-stippledLineEnable-02767", 7167 "text": " If the <code>stippledLineEnable</code> member of <a href=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a> is <code>VK_TRUE</code> and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_LINE_STIPPLE_EXT</code>, then the <code>lineStippleFactor</code> member of <a href=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[1,256]</span>" 7168 } 7169 ], 7170 "(VK_KHR_pipeline_library)": [ 7171 { 7172 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03371", 7173 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>" 7174 } 7175 ], 7176 "(VK_KHR_ray_tracing)": [ 7177 { 7178 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03372", 7179 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>" 7180 }, 7181 { 7182 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03373", 7183 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>" 7184 }, 7185 { 7186 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03374", 7187 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>" 7188 }, 7189 { 7190 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03375", 7191 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>" 7192 }, 7193 { 7194 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03376", 7195 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>" 7196 }, 7197 { 7198 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-03377", 7199 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>" 7200 } 7201 ], 7202 "(VK_NV_device_generated_commands)": [ 7203 { 7204 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02877", 7205 "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then the <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 7206 } 7207 ], 7208 "(VK_NV_device_generated_commands)+(VK_EXT_transform_feedback)": [ 7209 { 7210 "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-02966", 7211 "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>, then all stages <strong class=\"purple\">must</strong> not specify <code>Xfb</code> execution mode" 7212 } 7213 ], 7214 "(VK_EXT_pipeline_creation_cache_control)": [ 7215 { 7216 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pipelineCreationCacheControl-02878", 7217 "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>" 7218 } 7219 ], 7220 "(VK_KHR_fragment_shading_rate)": [ 7221 { 7222 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04494", 7223 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.width <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>" 7224 }, 7225 { 7226 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04495", 7227 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.height <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>" 7228 }, 7229 { 7230 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04496", 7231 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.width <strong class=\"purple\">must</strong> be a power-of-two value" 7232 }, 7233 { 7234 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04497", 7235 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.height <strong class=\"purple\">must</strong> be a power-of-two value" 7236 }, 7237 { 7238 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04498", 7239 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.width <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>" 7240 }, 7241 { 7242 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04499", 7243 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.height <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>" 7244 }, 7245 { 7246 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04500", 7247 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, and the <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code> feature</a> is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.width and <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::fragmentSize.height <strong class=\"purple\">must</strong> both be equal to <code>1</code>" 7248 }, 7249 { 7250 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04501", 7251 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, and the <a href=\"#feature-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code> feature</a> is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>" 7252 }, 7253 { 7254 "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-04502", 7255 "text": " If <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, and the <a href=\"#feature-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code> feature</a> is not enabled, <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>" 7256 }, 7257 { 7258 "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04503", 7259 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, and <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>::<code>viewportCount</code> is greater than <code>1</code>, entry points specified in <code>pStages</code> <strong class=\"purple\">must</strong> not write to the <code>PrimitiveShadingRateKHR</code> built-in" 7260 }, 7261 { 7262 "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04504", 7263 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and entry points specified in <code>pStages</code> write to the <code>ViewportIndex</code> built-in, they <strong class=\"purple\">must</strong> not also write to the <code>PrimitiveShadingRateKHR</code> built-in" 7264 }, 7265 { 7266 "vuid": "VUID-VkGraphicsPipelineCreateInfo-fragmentShadingRateNonTrivialCombinerOps-04506", 7267 "text": " If the <a href=\"#limits-fragmentShadingRateNonTrivialCombinerOps\"><code>fragmentShadingRateNonTrivialCombinerOps</code></a> limit is not supported and <code>VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR</code> is not included in <code>pDynamicState</code>-><code>pDynamicStates</code>, elements of <a href=\"#VkPipelineFragmentShadingRateStateCreateInfoKHR\">VkPipelineFragmentShadingRateStateCreateInfoKHR</a>::<code>combinerOps</code> <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code> or <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR</code>" 7268 } 7269 ], 7270 "(VK_KHR_fragment_shading_rate)+(VK_NV_viewport_array2)": [ 7271 { 7272 "vuid": "VUID-VkGraphicsPipelineCreateInfo-primitiveFragmentShadingRateWithMultipleViewports-04505", 7273 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, and entry points specified in <code>pStages</code> write to the <code>ViewportMaskNV</code> built-in, they <strong class=\"purple\">must</strong> not also write to the <code>PrimitiveShadingRateKHR</code> built-in" 7274 } 7275 ] 7276 }, 7277 "VkPipelineDynamicStateCreateInfo": { 7278 "core": [ 7279 { 7280 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442", 7281 "text": " Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique" 7282 }, 7283 { 7284 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType", 7285 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>" 7286 }, 7287 { 7288 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext", 7289 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7290 }, 7291 { 7292 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask", 7293 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 7294 }, 7295 { 7296 "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter", 7297 "text": " If <code>dynamicStateCount</code> is not <code>0</code>, <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicStateCount</code> valid <a href=\"#VkDynamicState\">VkDynamicState</a> values" 7298 } 7299 ] 7300 }, 7301 "VkGraphicsPipelineShaderGroupsCreateInfoNV": { 7302 "(VK_NV_device_generated_commands)": [ 7303 { 7304 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02879", 7305 "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be at least <code>1</code> and as maximum <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxGraphicsShaderGroupCount</code>" 7306 }, 7307 { 7308 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-02880", 7309 "text": " The sum of <code>groupCount</code> including those groups added from referenced <code>pPipelines</code> <strong class=\"purple\">must</strong> also be as maximum <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxGraphicsShaderGroupCount</code>" 7310 }, 7311 { 7312 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02881", 7313 "text": " The state of the first element of <code>pGroups</code> <strong class=\"purple\">must</strong> match its equivalent within the parent’s <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>" 7314 }, 7315 { 7316 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02882", 7317 "text": " Each element of <code>pGroups</code> <strong class=\"purple\">must</strong> in combination with the rest of the pipeline state yield a valid state configuration" 7318 }, 7319 { 7320 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-02886", 7321 "text": " Each element of the <code>pPipelines</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with identical state to the pipeline currently created except the state that can be overriden by <a href=\"#VkGraphicsShaderGroupCreateInfoNV\">VkGraphicsShaderGroupCreateInfoNV</a>" 7322 }, 7323 { 7324 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-deviceGeneratedCommands-02887", 7325 "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 7326 }, 7327 { 7328 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-sType-sType", 7329 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV</code>" 7330 }, 7331 { 7332 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-parameter", 7333 "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkGraphicsShaderGroupCreateInfoNV\">VkGraphicsShaderGroupCreateInfoNV</a> structures" 7334 }, 7335 { 7336 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pPipelines-parameter", 7337 "text": " If <code>pipelineCount</code> is not <code>0</code>, <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineCount</code> valid <a href=\"#VkPipeline\">VkPipeline</a> handles" 7338 }, 7339 { 7340 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-groupCount-arraylength", 7341 "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7342 } 7343 ], 7344 "(VK_NV_device_generated_commands)+!(VK_NV_mesh_shader)": [ 7345 { 7346 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02883", 7347 "text": " All elements of <code>pGroups</code> <strong class=\"purple\">must</strong> use the same shader stage combinations" 7348 } 7349 ], 7350 "(VK_NV_device_generated_commands)+(VK_NV_mesh_shader)": [ 7351 { 7352 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02884", 7353 "text": " All elements of <code>pGroups</code> <strong class=\"purple\">must</strong> use the same shader stage combinations unless any mesh shader stage is used, then either combination of task and mesh or just mesh shader is valid" 7354 }, 7355 { 7356 "vuid": "VUID-VkGraphicsPipelineShaderGroupsCreateInfoNV-pGroups-02885", 7357 "text": " Mesh and regular primitive shading stages cannot be mixed across <code>pGroups</code>" 7358 } 7359 ] 7360 }, 7361 "VkGraphicsShaderGroupCreateInfoNV": { 7362 "(VK_NV_device_generated_commands)": [ 7363 { 7364 "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-02888", 7365 "text": " For <code>stageCount</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>stageCount</code> apply" 7366 }, 7367 { 7368 "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-02889", 7369 "text": " For <code>pStages</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pStages</code> apply" 7370 }, 7371 { 7372 "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pVertexInputState-02890", 7373 "text": " For <code>pVertexInputState</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pVertexInputState</code> apply" 7374 }, 7375 { 7376 "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pTessellationState-02891", 7377 "text": " For <code>pTessellationState</code>, the same restrictions as in <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>pTessellationState</code> apply" 7378 }, 7379 { 7380 "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-sType-sType", 7381 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV</code>" 7382 }, 7383 { 7384 "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pNext-pNext", 7385 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7386 }, 7387 { 7388 "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-pStages-parameter", 7389 "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures" 7390 }, 7391 { 7392 "vuid": "VUID-VkGraphicsShaderGroupCreateInfoNV-stageCount-arraylength", 7393 "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7394 } 7395 ] 7396 }, 7397 "vkDestroyPipeline": { 7398 "core": [ 7399 { 7400 "vuid": "VUID-vkDestroyPipeline-pipeline-00765", 7401 "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution" 7402 }, 7403 { 7404 "vuid": "VUID-vkDestroyPipeline-pipeline-00766", 7405 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 7406 }, 7407 { 7408 "vuid": "VUID-vkDestroyPipeline-pipeline-00767", 7409 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7410 }, 7411 { 7412 "vuid": "VUID-vkDestroyPipeline-device-parameter", 7413 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7414 }, 7415 { 7416 "vuid": "VUID-vkDestroyPipeline-pipeline-parameter", 7417 "text": " If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 7418 }, 7419 { 7420 "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter", 7421 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 7422 }, 7423 { 7424 "vuid": "VUID-vkDestroyPipeline-pipeline-parent", 7425 "text": " If <code>pipeline</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7426 } 7427 ] 7428 }, 7429 "vkCreatePipelineCache": { 7430 "core": [ 7431 { 7432 "vuid": "VUID-vkCreatePipelineCache-device-parameter", 7433 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7434 }, 7435 { 7436 "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter", 7437 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineCacheCreateInfo\">VkPipelineCacheCreateInfo</a> structure" 7438 }, 7439 { 7440 "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter", 7441 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 7442 }, 7443 { 7444 "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter", 7445 "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle" 7446 } 7447 ] 7448 }, 7449 "VkPipelineCacheCreateInfo": { 7450 "core": [ 7451 { 7452 "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768", 7453 "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetPipelineCacheData</code> when <code>pInitialData</code> was originally retrieved" 7454 }, 7455 { 7456 "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769", 7457 "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetPipelineCacheData</code>" 7458 }, 7459 { 7460 "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType", 7461 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>" 7462 }, 7463 { 7464 "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext", 7465 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7466 }, 7467 { 7468 "vuid": "VUID-VkPipelineCacheCreateInfo-flags-parameter", 7469 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCacheCreateFlagBits\">VkPipelineCacheCreateFlagBits</a> values" 7470 }, 7471 { 7472 "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter", 7473 "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes" 7474 } 7475 ], 7476 "(VK_EXT_pipeline_creation_cache_control)": [ 7477 { 7478 "vuid": "VUID-VkPipelineCacheCreateInfo-pipelineCreationCacheControl-02892", 7479 "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>" 7480 } 7481 ] 7482 }, 7483 "vkMergePipelineCaches": { 7484 "core": [ 7485 { 7486 "vuid": "VUID-vkMergePipelineCaches-dstCache-00770", 7487 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches" 7488 }, 7489 { 7490 "vuid": "VUID-vkMergePipelineCaches-device-parameter", 7491 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7492 }, 7493 { 7494 "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter", 7495 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle" 7496 }, 7497 { 7498 "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter", 7499 "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handles" 7500 }, 7501 { 7502 "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength", 7503 "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7504 }, 7505 { 7506 "vuid": "VUID-vkMergePipelineCaches-dstCache-parent", 7507 "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7508 }, 7509 { 7510 "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent", 7511 "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7512 } 7513 ] 7514 }, 7515 "vkGetPipelineCacheData": { 7516 "core": [ 7517 { 7518 "vuid": "VUID-vkGetPipelineCacheData-device-parameter", 7519 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7520 }, 7521 { 7522 "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter", 7523 "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle" 7524 }, 7525 { 7526 "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter", 7527 "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value" 7528 }, 7529 { 7530 "vuid": "VUID-vkGetPipelineCacheData-pData-parameter", 7531 "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes" 7532 }, 7533 { 7534 "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent", 7535 "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7536 } 7537 ] 7538 }, 7539 "vkDestroyPipelineCache": { 7540 "core": [ 7541 { 7542 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771", 7543 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 7544 }, 7545 { 7546 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772", 7547 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7548 }, 7549 { 7550 "vuid": "VUID-vkDestroyPipelineCache-device-parameter", 7551 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7552 }, 7553 { 7554 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter", 7555 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle" 7556 }, 7557 { 7558 "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter", 7559 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 7560 }, 7561 { 7562 "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent", 7563 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7564 } 7565 ] 7566 }, 7567 "VkSpecializationInfo": { 7568 "core": [ 7569 { 7570 "vuid": "VUID-VkSpecializationInfo-offset-00773", 7571 "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>" 7572 }, 7573 { 7574 "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774", 7575 "text": " The <code>size</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dataSize</code> minus <code>offset</code>" 7576 }, 7577 { 7578 "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter", 7579 "text": " If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <a href=\"#VkSpecializationMapEntry\">VkSpecializationMapEntry</a> structures" 7580 }, 7581 { 7582 "vuid": "VUID-VkSpecializationInfo-pData-parameter", 7583 "text": " If <code>dataSize</code> is not <code>0</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 7584 } 7585 ] 7586 }, 7587 "VkSpecializationMapEntry": { 7588 "core": [ 7589 { 7590 "vuid": "VUID-VkSpecializationMapEntry-constantID-00776", 7591 "text": " For a <code>constantID</code> specialization constant declared in a shader, <code>size</code> <strong class=\"purple\">must</strong> match the byte size of the <code>constantID</code>. If the specialization constant is of type <code>boolean</code>, <code>size</code> <strong class=\"purple\">must</strong> be the byte size of <code>VkBool32</code>" 7592 } 7593 ] 7594 }, 7595 "VkPipelineLibraryCreateInfoKHR": { 7596 "(VK_KHR_pipeline_library)": [ 7597 { 7598 "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-03381", 7599 "text": " Each element of <code>pLibraries</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>" 7600 }, 7601 { 7602 "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-sType-sType", 7603 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR</code>" 7604 }, 7605 { 7606 "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pNext-pNext", 7607 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7608 }, 7609 { 7610 "vuid": "VUID-VkPipelineLibraryCreateInfoKHR-pLibraries-parameter", 7611 "text": " If <code>libraryCount</code> is not <code>0</code>, <code>pLibraries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>libraryCount</code> valid <a href=\"#VkPipeline\">VkPipeline</a> handles" 7612 } 7613 ] 7614 }, 7615 "vkCmdBindPipeline": { 7616 "core": [ 7617 { 7618 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777", 7619 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 7620 }, 7621 { 7622 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778", 7623 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 7624 }, 7625 { 7626 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779", 7627 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a compute pipeline" 7628 }, 7629 { 7630 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780", 7631 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a graphics pipeline" 7632 }, 7633 { 7634 "vuid": "VUID-vkCmdBindPipeline-pipeline-00781", 7635 "text": " If the <a href=\"#features-variableMultisampleRate\">variable multisample rate</a> feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass <a href=\"#renderpass-noattachments\">uses no attachments</a>, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline" 7636 }, 7637 { 7638 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter", 7639 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 7640 }, 7641 { 7642 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter", 7643 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 7644 }, 7645 { 7646 "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter", 7647 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 7648 }, 7649 { 7650 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording", 7651 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 7652 }, 7653 { 7654 "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool", 7655 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 7656 }, 7657 { 7658 "vuid": "VUID-vkCmdBindPipeline-commonparent", 7659 "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 7660 } 7661 ], 7662 "(VK_EXT_sample_locations)": [ 7663 { 7664 "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525", 7665 "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code>, and <code>pipeline</code> is a graphics pipeline created with a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure having its <code>sampleLocationsEnable</code> member set to <code>VK_TRUE</code> but without <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> enabled then the current render pass instance <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the <code>sampleLocationsInfo</code> specified in <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> when the pipeline was created" 7666 } 7667 ], 7668 "(VK_EXT_transform_feedback)": [ 7669 { 7670 "vuid": "VUID-vkCmdBindPipeline-None-02323", 7671 "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active" 7672 } 7673 ], 7674 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 7675 { 7676 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391", 7677 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 7678 }, 7679 { 7680 "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392", 7681 "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR</code>, the <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline" 7682 } 7683 ], 7684 "(VK_KHR_pipeline_library)": [ 7685 { 7686 "vuid": "VUID-vkCmdBindPipeline-pipeline-03382", 7687 "text": " The <code>pipeline</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code> set" 7688 } 7689 ] 7690 }, 7691 "vkCmdBindPipelineShaderGroupNV": { 7692 "(VK_NV_device_generated_commands)": [ 7693 { 7694 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02893", 7695 "text": " <code>groupIndex</code> <strong class=\"purple\">must</strong> be <code>0</code> or less than the effective <a href=\"#VkGraphicsPipelineShaderGroupsCreateInfoNV\">VkGraphicsPipelineShaderGroupsCreateInfoNV</a>::<code>groupCount</code> including the referenced pipelines" 7696 }, 7697 { 7698 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-02894", 7699 "text": " The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 7700 }, 7701 { 7702 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-groupIndex-02895", 7703 "text": " The same restrictions as <a href=\"#vkCmdBindPipeline\">vkCmdBindPipeline</a> apply as if the bound pipeline was created only with the Shader Group from the <code>groupIndex</code> information" 7704 }, 7705 { 7706 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-deviceGeneratedCommands-02896", 7707 "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 7708 }, 7709 { 7710 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-parameter", 7711 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 7712 }, 7713 { 7714 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipelineBindPoint-parameter", 7715 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 7716 }, 7717 { 7718 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-pipeline-parameter", 7719 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 7720 }, 7721 { 7722 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-recording", 7723 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 7724 }, 7725 { 7726 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commandBuffer-cmdpool", 7727 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 7728 }, 7729 { 7730 "vuid": "VUID-vkCmdBindPipelineShaderGroupNV-commonparent", 7731 "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 7732 } 7733 ] 7734 }, 7735 "vkGetPipelineExecutablePropertiesKHR": { 7736 "(VK_KHR_pipeline_executable_properties)": [ 7737 { 7738 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipelineExecutableInfo-03270", 7739 "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled" 7740 }, 7741 { 7742 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pipeline-03271", 7743 "text": " <code>pipeline</code> member of <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>" 7744 }, 7745 { 7746 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-device-parameter", 7747 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7748 }, 7749 { 7750 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter", 7751 "text": " <code>pPipelineInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInfoKHR\">VkPipelineInfoKHR</a> structure" 7752 }, 7753 { 7754 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pExecutableCount-parameter", 7755 "text": " <code>pExecutableCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 7756 }, 7757 { 7758 "vuid": "VUID-vkGetPipelineExecutablePropertiesKHR-pProperties-parameter", 7759 "text": " If the value referenced by <code>pExecutableCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pExecutableCount</code> <a href=\"#VkPipelineExecutablePropertiesKHR\">VkPipelineExecutablePropertiesKHR</a> structures" 7760 } 7761 ] 7762 }, 7763 "VkPipelineInfoKHR": { 7764 "(VK_KHR_pipeline_executable_properties)": [ 7765 { 7766 "vuid": "VUID-VkPipelineInfoKHR-sType-sType", 7767 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR</code>" 7768 }, 7769 { 7770 "vuid": "VUID-VkPipelineInfoKHR-pNext-pNext", 7771 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7772 }, 7773 { 7774 "vuid": "VUID-VkPipelineInfoKHR-pipeline-parameter", 7775 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 7776 } 7777 ] 7778 }, 7779 "VkPipelineExecutablePropertiesKHR": { 7780 "(VK_KHR_pipeline_executable_properties)": [ 7781 { 7782 "vuid": "VUID-VkPipelineExecutablePropertiesKHR-sType-sType", 7783 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR</code>" 7784 }, 7785 { 7786 "vuid": "VUID-VkPipelineExecutablePropertiesKHR-pNext-pNext", 7787 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7788 } 7789 ] 7790 }, 7791 "vkGetPipelineExecutableStatisticsKHR": { 7792 "(VK_KHR_pipeline_executable_properties)": [ 7793 { 7794 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipelineExecutableInfo-03272", 7795 "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled" 7796 }, 7797 { 7798 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03273", 7799 "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>" 7800 }, 7801 { 7802 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pipeline-03274", 7803 "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR</code> set in the <code>flags</code> field of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>" 7804 }, 7805 { 7806 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-device-parameter", 7807 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7808 }, 7809 { 7810 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter", 7811 "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure" 7812 }, 7813 { 7814 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatisticCount-parameter", 7815 "text": " <code>pStatisticCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 7816 }, 7817 { 7818 "vuid": "VUID-vkGetPipelineExecutableStatisticsKHR-pStatistics-parameter", 7819 "text": " If the value referenced by <code>pStatisticCount</code> is not <code>0</code>, and <code>pStatistics</code> is not <code>NULL</code>, <code>pStatistics</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pStatisticCount</code> <a href=\"#VkPipelineExecutableStatisticKHR\">VkPipelineExecutableStatisticKHR</a> structures" 7820 } 7821 ] 7822 }, 7823 "VkPipelineExecutableInfoKHR": { 7824 "(VK_KHR_pipeline_executable_properties)": [ 7825 { 7826 "vuid": "VUID-VkPipelineExecutableInfoKHR-executableIndex-03275", 7827 "text": " <code>executableIndex</code> <strong class=\"purple\">must</strong> be less than the number of executables associated with <code>pipeline</code> as returned in the <code>pExecutableCount</code> parameter of <code>vkGetPipelineExecutablePropertiesKHR</code>" 7828 }, 7829 { 7830 "vuid": "VUID-VkPipelineExecutableInfoKHR-sType-sType", 7831 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR</code>" 7832 }, 7833 { 7834 "vuid": "VUID-VkPipelineExecutableInfoKHR-pNext-pNext", 7835 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7836 }, 7837 { 7838 "vuid": "VUID-VkPipelineExecutableInfoKHR-pipeline-parameter", 7839 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 7840 } 7841 ] 7842 }, 7843 "VkPipelineExecutableStatisticKHR": { 7844 "(VK_KHR_pipeline_executable_properties)": [ 7845 { 7846 "vuid": "VUID-VkPipelineExecutableStatisticKHR-sType-sType", 7847 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR</code>" 7848 }, 7849 { 7850 "vuid": "VUID-VkPipelineExecutableStatisticKHR-pNext-pNext", 7851 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7852 } 7853 ] 7854 }, 7855 "vkGetPipelineExecutableInternalRepresentationsKHR": { 7856 "(VK_KHR_pipeline_executable_properties)": [ 7857 { 7858 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipelineExecutableInfo-03276", 7859 "text": " <a href=\"#features-pipelineExecutableInfo\"><code>pipelineExecutableInfo</code></a> <strong class=\"purple\">must</strong> be enabled" 7860 }, 7861 { 7862 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03277", 7863 "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>device</code>" 7864 }, 7865 { 7866 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pipeline-03278", 7867 "text": " <code>pipeline</code> member of <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR</code> set in the <code>flags</code> field of <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a> or <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>" 7868 }, 7869 { 7870 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-device-parameter", 7871 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7872 }, 7873 { 7874 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter", 7875 "text": " <code>pExecutableInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineExecutableInfoKHR\">VkPipelineExecutableInfoKHR</a> structure" 7876 }, 7877 { 7878 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentationCount-parameter", 7879 "text": " <code>pInternalRepresentationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 7880 }, 7881 { 7882 "vuid": "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pInternalRepresentations-parameter", 7883 "text": " If the value referenced by <code>pInternalRepresentationCount</code> is not <code>0</code>, and <code>pInternalRepresentations</code> is not <code>NULL</code>, <code>pInternalRepresentations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInternalRepresentationCount</code> <a href=\"#VkPipelineExecutableInternalRepresentationKHR\">VkPipelineExecutableInternalRepresentationKHR</a> structures" 7884 } 7885 ] 7886 }, 7887 "VkPipelineExecutableInternalRepresentationKHR": { 7888 "(VK_KHR_pipeline_executable_properties)": [ 7889 { 7890 "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-sType-sType", 7891 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR</code>" 7892 }, 7893 { 7894 "vuid": "VUID-VkPipelineExecutableInternalRepresentationKHR-pNext-pNext", 7895 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 7896 } 7897 ] 7898 }, 7899 "vkGetShaderInfoAMD": { 7900 "(VK_AMD_shader_info)": [ 7901 { 7902 "vuid": "VUID-vkGetShaderInfoAMD-device-parameter", 7903 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7904 }, 7905 { 7906 "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter", 7907 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 7908 }, 7909 { 7910 "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter", 7911 "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value" 7912 }, 7913 { 7914 "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter", 7915 "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value" 7916 }, 7917 { 7918 "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter", 7919 "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value" 7920 }, 7921 { 7922 "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter", 7923 "text": " If the value referenced by <code>pInfoSize</code> is not <code>0</code>, and <code>pInfo</code> is not <code>NULL</code>, <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfoSize</code> bytes" 7924 }, 7925 { 7926 "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent", 7927 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7928 } 7929 ] 7930 }, 7931 "VkPipelineCompilerControlCreateInfoAMD": { 7932 "(VK_AMD_pipeline_compiler_control)": [ 7933 { 7934 "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-sType-sType", 7935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD</code>" 7936 }, 7937 { 7938 "vuid": "VUID-VkPipelineCompilerControlCreateInfoAMD-compilerControlFlags-zerobitmask", 7939 "text": " <code>compilerControlFlags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 7940 } 7941 ] 7942 }, 7943 "vkCreateRayTracingPipelinesNV": { 7944 "core": [ 7945 { 7946 "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03415", 7947 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" 7948 }, 7949 { 7950 "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-03416", 7951 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" 7952 } 7953 ], 7954 "(VK_EXT_pipeline_creation_cache_control)": [ 7955 { 7956 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-02903", 7957 "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" 7958 } 7959 ], 7960 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 7961 { 7962 "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter", 7963 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 7964 }, 7965 { 7966 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter", 7967 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle" 7968 }, 7969 { 7970 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter", 7971 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a> structures" 7972 }, 7973 { 7974 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter", 7975 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 7976 }, 7977 { 7978 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter", 7979 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles" 7980 }, 7981 { 7982 "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength", 7983 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 7984 }, 7985 { 7986 "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent", 7987 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 7988 } 7989 ] 7990 }, 7991 "vkCreateRayTracingPipelinesKHR": { 7992 "core": [ 7993 { 7994 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03415", 7995 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element" 7996 }, 7997 { 7998 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-flags-03416", 7999 "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set" 8000 }, 8001 { 8002 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-rayTracing-03455", 8003 "text": " The <a href=\"#features-raytracing\"><code>rayTracing</code></a> feature <strong class=\"purple\">must</strong> be enabled" 8004 } 8005 ], 8006 "(VK_EXT_pipeline_creation_cache_control)": [ 8007 { 8008 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-02903", 8009 "text": " If <code>pipelineCache</code> was created with <code>VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT</code>, host access to <code>pipelineCache</code> <strong class=\"purple\">must</strong> be <a href=\"#fundamentals-threadingbehavior\">externally synchronized</a>" 8010 } 8011 ], 8012 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 8013 { 8014 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-device-parameter", 8015 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 8016 }, 8017 { 8018 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parameter", 8019 "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineCache\">VkPipelineCache</a> handle" 8020 }, 8021 { 8022 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pCreateInfos-parameter", 8023 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a> structures" 8024 }, 8025 { 8026 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pAllocator-parameter", 8027 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 8028 }, 8029 { 8030 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pPipelines-parameter", 8031 "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <a href=\"#VkPipeline\">VkPipeline</a> handles" 8032 }, 8033 { 8034 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-createInfoCount-arraylength", 8035 "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8036 }, 8037 { 8038 "vuid": "VUID-vkCreateRayTracingPipelinesKHR-pipelineCache-parent", 8039 "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8040 } 8041 ] 8042 }, 8043 "VkRayTracingPipelineCreateInfoNV": { 8044 "core": [ 8045 { 8046 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03421", 8047 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>" 8048 }, 8049 { 8050 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03422", 8051 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" 8052 }, 8053 { 8054 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03423", 8055 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 8056 }, 8057 { 8058 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03424", 8059 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>" 8060 }, 8061 { 8062 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-03425", 8063 "text": " The <code>stage</code> member of at least one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>" 8064 }, 8065 { 8066 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-03426", 8067 "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" 8068 }, 8069 { 8070 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03427", 8071 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>" 8072 }, 8073 { 8074 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-03428", 8075 "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>" 8076 }, 8077 { 8078 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-03457", 8079 "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>" 8080 } 8081 ], 8082 "(VK_NV_device_generated_commands)": [ 8083 { 8084 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02904", 8085 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>" 8086 } 8087 ], 8088 "(VK_EXT_pipeline_creation_cache_control)": [ 8089 { 8090 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pipelineCreationCacheControl-02905", 8091 "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>" 8092 }, 8093 { 8094 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02957", 8095 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include both <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code> and <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> at the same time" 8096 } 8097 ], 8098 "(VK_KHR_pipeline_library)": [ 8099 { 8100 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03456", 8101 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>" 8102 } 8103 ], 8104 "(VK_KHR_ray_tracing)": [ 8105 { 8106 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03458", 8107 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>" 8108 }, 8109 { 8110 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03459", 8111 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>" 8112 }, 8113 { 8114 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03460", 8115 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>" 8116 }, 8117 { 8118 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03461", 8119 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>" 8120 }, 8121 { 8122 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03462", 8123 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>" 8124 }, 8125 { 8126 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-03463", 8127 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>" 8128 } 8129 ], 8130 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 8131 { 8132 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType", 8133 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>" 8134 }, 8135 { 8136 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext", 8137 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>" 8138 }, 8139 { 8140 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-unique", 8141 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 8142 }, 8143 { 8144 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter", 8145 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values" 8146 }, 8147 { 8148 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter", 8149 "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures" 8150 }, 8151 { 8152 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter", 8153 "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkRayTracingShaderGroupCreateInfoNV\">VkRayTracingShaderGroupCreateInfoNV</a> structures" 8154 }, 8155 { 8156 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter", 8157 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 8158 }, 8159 { 8160 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength", 8161 "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8162 }, 8163 { 8164 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength", 8165 "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8166 }, 8167 { 8168 "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent", 8169 "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 8170 } 8171 ] 8172 }, 8173 "VkRayTracingPipelineCreateInfoKHR": { 8174 "core": [ 8175 { 8176 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03421", 8177 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>" 8178 }, 8179 { 8180 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03422", 8181 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command’s <code>pCreateInfos</code> parameter" 8182 }, 8183 { 8184 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03423", 8185 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 8186 }, 8187 { 8188 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03424", 8189 "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>" 8190 }, 8191 { 8192 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-stage-03425", 8193 "text": " The <code>stage</code> member of at least one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>" 8194 }, 8195 { 8196 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-03426", 8197 "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter" 8198 }, 8199 { 8200 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03427", 8201 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>" 8202 }, 8203 { 8204 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-03428", 8205 "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>" 8206 }, 8207 { 8208 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-maxRecursionDepth-03464", 8209 "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxRecursionDepth</code>" 8210 }, 8211 { 8212 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03470", 8213 "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>anyHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>" 8214 }, 8215 { 8216 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03471", 8217 "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, for any element of <code>pGroups</code> with a <code>type</code> of <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> or <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code>, the <code>closestHitShader</code> of that element <strong class=\"purple\">must</strong> not be <code>VK_SHADER_UNUSED_KHR</code>" 8218 }, 8219 { 8220 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPrimitiveCulling-03472", 8221 "text": " If the <a href=\"#features-rayTracingPrimitiveCulling\"><code>rayTracingPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR</code>" 8222 }, 8223 { 8224 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-rayTracingPrimitiveCulling-03473", 8225 "text": " If the <a href=\"#features-rayTracingPrimitiveCulling\"><code>rayTracingPrimitiveCulling</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR</code>" 8226 }, 8227 { 8228 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-02958", 8229 "text": " If <code>libraries.libraryCount</code> is zero, then <code>stageCount</code> <strong class=\"purple\">must</strong> not be zero" 8230 }, 8231 { 8232 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-02959", 8233 "text": " If <code>libraries.libraryCount</code> is zero, then <code>groupCount</code> <strong class=\"purple\">must</strong> not be zero" 8234 } 8235 ], 8236 "(VK_NV_device_generated_commands)": [ 8237 { 8238 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-02904", 8239 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>" 8240 } 8241 ], 8242 "(VK_EXT_pipeline_creation_cache_control)": [ 8243 { 8244 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pipelineCreationCacheControl-02905", 8245 "text": " If the <a href=\"#features-pipelineCreationCacheControl\"><code>pipelineCreationCacheControl</code></a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT</code> or <code>VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT</code>" 8246 } 8247 ], 8248 "(VK_KHR_pipeline_library)": [ 8249 { 8250 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-03465", 8251 "text": " If <code>flags</code> includes <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>" 8252 }, 8253 { 8254 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraryCount-03466", 8255 "text": " If the <code>libraryCount</code> member of <code>libraries</code> is greater than <code>0</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>" 8256 }, 8257 { 8258 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03467", 8259 "text": " Each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with the value of <code>maxRecursionDepth</code> equal to that in this pipeline" 8260 }, 8261 { 8262 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03468", 8263 "text": " Each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with a <code>layout</code> that is compatible with the <code>layout</code> in this pipeline" 8264 }, 8265 { 8266 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraries-03469", 8267 "text": " Each element of the <code>pLibraries</code> member of <code>libraries</code> <strong class=\"purple\">must</strong> have been created with values of the <code>maxPayloadSize</code>, <code>maxAttributeSize</code>, and <code>maxCallableSize</code> members of <code>pLibraryInterface</code> equal to those in this pipeline" 8268 } 8269 ], 8270 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 8271 { 8272 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-sType", 8273 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR</code>" 8274 }, 8275 { 8276 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pNext-pNext", 8277 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> or <a href=\"#VkPipelineCreationFeedbackCreateInfoEXT\">VkPipelineCreationFeedbackCreateInfoEXT</a>" 8278 }, 8279 { 8280 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-sType-unique", 8281 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 8282 }, 8283 { 8284 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-flags-parameter", 8285 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values" 8286 }, 8287 { 8288 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pStages-parameter", 8289 "text": " If <code>stageCount</code> is not <code>0</code>, <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <a href=\"#VkPipelineShaderStageCreateInfo\">VkPipelineShaderStageCreateInfo</a> structures" 8290 }, 8291 { 8292 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pGroups-parameter", 8293 "text": " If <code>groupCount</code> is not <code>0</code>, <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <a href=\"#VkRayTracingShaderGroupCreateInfoKHR\">VkRayTracingShaderGroupCreateInfoKHR</a> structures" 8294 }, 8295 { 8296 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-libraries-parameter", 8297 "text": " <code>libraries</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLibraryCreateInfoKHR\">VkPipelineLibraryCreateInfoKHR</a> structure" 8298 }, 8299 { 8300 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-pLibraryInterface-parameter", 8301 "text": " If <code>pLibraryInterface</code> is not <code>NULL</code>, <code>pLibraryInterface</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkRayTracingPipelineInterfaceCreateInfoKHR\">VkRayTracingPipelineInterfaceCreateInfoKHR</a> structure" 8302 }, 8303 { 8304 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-layout-parameter", 8305 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 8306 }, 8307 { 8308 "vuid": "VUID-VkRayTracingPipelineCreateInfoKHR-commonparent", 8309 "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 8310 } 8311 ] 8312 }, 8313 "VkRayTracingShaderGroupCreateInfoNV": { 8314 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 8315 { 8316 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413", 8317 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>, <code>VK_SHADER_STAGE_MISS_BIT_NV</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_NV</code>" 8318 }, 8319 { 8320 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414", 8321 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>closestHitShader</code>, <code>anyHitShader</code>, and <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_NV</code>" 8322 }, 8323 { 8324 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415", 8325 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_NV</code>" 8326 }, 8327 { 8328 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416", 8329 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_NV</code>" 8330 }, 8331 { 8332 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417", 8333 "text": " <code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV</code>" 8334 }, 8335 { 8336 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418", 8337 "text": " <code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_NV</code>" 8338 }, 8339 { 8340 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType", 8341 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV</code>" 8342 }, 8343 { 8344 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext", 8345 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 8346 }, 8347 { 8348 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter", 8349 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeKHR\">VkRayTracingShaderGroupTypeKHR</a> value" 8350 } 8351 ] 8352 }, 8353 "VkRayTracingShaderGroupCreateInfoKHR": { 8354 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 8355 { 8356 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03474", 8357 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_KHR</code>, <code>VK_SHADER_STAGE_MISS_BIT_KHR</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_KHR</code>" 8358 }, 8359 { 8360 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03475", 8361 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR</code> then <code>closestHitShader</code>, <code>anyHitShader</code>, and <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_KHR</code>" 8362 }, 8363 { 8364 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03476", 8365 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_KHR</code>" 8366 }, 8367 { 8368 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-03477", 8369 "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_KHR</code>" 8370 }, 8371 { 8372 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-closestHitShader-03478", 8373 "text": " <code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_KHR</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR</code>" 8374 }, 8375 { 8376 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-anyHitShader-03479", 8377 "text": " <code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_KHR</code> or a valid index into <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_KHR</code>" 8378 }, 8379 { 8380 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03480", 8381 "text": " If <a href=\"#VkPhysicalDeviceRayTracingFeaturesKHR\">VkPhysicalDeviceRayTracingFeaturesKHR</a>::<code>rayTracingShaderGroupHandleCaptureReplayMixed</code> is <code>VK_FALSE</code> then <code>pShaderGroupCaptureReplayHandle</code> <strong class=\"purple\">must</strong> not be provided if it has not been provided on a previous call to ray tracing pipeline creation" 8382 }, 8383 { 8384 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03481", 8385 "text": " If <a href=\"#VkPhysicalDeviceRayTracingFeaturesKHR\">VkPhysicalDeviceRayTracingFeaturesKHR</a>::<code>rayTracingShaderGroupHandleCaptureReplayMixed</code> is <code>VK_FALSE</code> then the caller <strong class=\"purple\">must</strong> guarantee that no ray tracing pipeline creation commands with <code>pShaderGroupCaptureReplayHandle</code> provided execute simultaneously with ray tracing pipeline creation commands without <code>pShaderGroupCaptureReplayHandle</code> provided" 8386 }, 8387 { 8388 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-sType-sType", 8389 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR</code>" 8390 }, 8391 { 8392 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-pNext-pNext", 8393 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 8394 }, 8395 { 8396 "vuid": "VUID-VkRayTracingShaderGroupCreateInfoKHR-type-parameter", 8397 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeKHR\">VkRayTracingShaderGroupTypeKHR</a> value" 8398 } 8399 ] 8400 }, 8401 "VkRayTracingPipelineInterfaceCreateInfoKHR": { 8402 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 8403 { 8404 "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-sType-sType", 8405 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR</code>" 8406 }, 8407 { 8408 "vuid": "VUID-VkRayTracingPipelineInterfaceCreateInfoKHR-pNext-pNext", 8409 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 8410 } 8411 ] 8412 }, 8413 "vkGetRayTracingShaderGroupHandlesKHR": { 8414 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 8415 { 8416 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-04050", 8417 "text": " <code>firstGroup</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>" 8418 }, 8419 { 8420 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-firstGroup-02419", 8421 "text": " The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of shader groups in <code>pipeline</code>" 8422 }, 8423 { 8424 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-02420", 8425 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>shaderGroupHandleSize</code> {times} <code>groupCount</code></span>" 8426 }, 8427 { 8428 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-device-parameter", 8429 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 8430 }, 8431 { 8432 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parameter", 8433 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 8434 }, 8435 { 8436 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pData-parameter", 8437 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 8438 }, 8439 { 8440 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-dataSize-arraylength", 8441 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8442 }, 8443 { 8444 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-parent", 8445 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8446 } 8447 ], 8448 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_pipeline_library)": [ 8449 { 8450 "vuid": "VUID-vkGetRayTracingShaderGroupHandlesKHR-pipeline-03482", 8451 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have not been created with <code>VK_PIPELINE_CREATE_LIBRARY_BIT_KHR</code>" 8452 } 8453 ] 8454 }, 8455 "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR": { 8456 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 8457 { 8458 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-04051", 8459 "text": " <code>firstGroup</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>" 8460 }, 8461 { 8462 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-firstGroup-03483", 8463 "text": " The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of shader groups in <code>pipeline</code>" 8464 }, 8465 { 8466 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-03484", 8467 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>shaderGroupHandleCaptureReplaySize</code> {times} <code>groupCount</code></span>" 8468 }, 8469 { 8470 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-rayTracingShaderGroupHandleCaptureReplay-03485", 8471 "text": " <code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingShaderGroupHandleCaptureReplay</code> <strong class=\"purple\">must</strong> be enabled to call this function" 8472 }, 8473 { 8474 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-device-parameter", 8475 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 8476 }, 8477 { 8478 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parameter", 8479 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 8480 }, 8481 { 8482 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pData-parameter", 8483 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 8484 }, 8485 { 8486 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-dataSize-arraylength", 8487 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8488 }, 8489 { 8490 "vuid": "VUID-vkGetRayTracingCaptureReplayShaderGroupHandlesKHR-pipeline-parent", 8491 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8492 } 8493 ] 8494 }, 8495 "vkCompileDeferredNV": { 8496 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 8497 { 8498 "vuid": "VUID-vkCompileDeferredNV-pipeline-02237", 8499 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code>" 8500 }, 8501 { 8502 "vuid": "VUID-vkCompileDeferredNV-shader-02238", 8503 "text": " <code>shader</code> <strong class=\"purple\">must</strong> not have been called as a deferred compile before" 8504 }, 8505 { 8506 "vuid": "VUID-vkCompileDeferredNV-device-parameter", 8507 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 8508 }, 8509 { 8510 "vuid": "VUID-vkCompileDeferredNV-pipeline-parameter", 8511 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 8512 }, 8513 { 8514 "vuid": "VUID-vkCompileDeferredNV-pipeline-parent", 8515 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 8516 } 8517 ] 8518 }, 8519 "VkPipelineCreationFeedbackCreateInfoEXT": { 8520 "(VK_EXT_pipeline_creation_feedback)": [ 8521 { 8522 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02668", 8523 "text": " When chained to <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>stageCount</code>" 8524 }, 8525 { 8526 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02669", 8527 "text": " When chained to <a href=\"#VkComputePipelineCreateInfo\">VkComputePipelineCreateInfo</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal 1" 8528 }, 8529 { 8530 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-sType-sType", 8531 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT</code>" 8532 }, 8533 { 8534 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineCreationFeedback-parameter", 8535 "text": " <code>pPipelineCreationFeedback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structure" 8536 }, 8537 { 8538 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pPipelineStageCreationFeedbacks-parameter", 8539 "text": " <code>pPipelineStageCreationFeedbacks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pipelineStageCreationFeedbackCount</code> <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a> structures" 8540 }, 8541 { 8542 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-arraylength", 8543 "text": " <code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8544 } 8545 ], 8546 "(VK_EXT_pipeline_creation_feedback)+(VK_KHR_ray_tracing)": [ 8547 { 8548 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02670", 8549 "text": " When chained to <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkRayTracingPipelineCreateInfoKHR\">VkRayTracingPipelineCreateInfoKHR</a>::<code>stageCount</code>" 8550 } 8551 ], 8552 "(VK_EXT_pipeline_creation_feedback)+(VK_NV_ray_tracing)": [ 8553 { 8554 "vuid": "VUID-VkPipelineCreationFeedbackCreateInfoEXT-pipelineStageCreationFeedbackCount-02969", 8555 "text": " When chained to <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>, <a href=\"#VkPipelineCreationFeedbackEXT\">VkPipelineCreationFeedbackEXT</a>::<code>pipelineStageCreationFeedbackCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkRayTracingPipelineCreateInfoNV\">VkRayTracingPipelineCreateInfoNV</a>::<code>stageCount</code>" 8556 } 8557 ] 8558 }, 8559 "VkAllocationCallbacks": { 8560 "core": [ 8561 { 8562 "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632", 8563 "text": " <code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>" 8564 }, 8565 { 8566 "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633", 8567 "text": " <code>pfnReallocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkReallocationFunction\">PFN_vkReallocationFunction</a>" 8568 }, 8569 { 8570 "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634", 8571 "text": " <code>pfnFree</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkFreeFunction\">PFN_vkFreeFunction</a>" 8572 }, 8573 { 8574 "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635", 8575 "text": " If either of <code>pfnInternalAllocation</code> or <code>pfnInternalFree</code> is not <code>NULL</code>, both <strong class=\"purple\">must</strong> be valid callbacks" 8576 } 8577 ] 8578 }, 8579 "vkGetPhysicalDeviceMemoryProperties": { 8580 "core": [ 8581 { 8582 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter", 8583 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 8584 }, 8585 { 8586 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter", 8587 "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a> structure" 8588 } 8589 ] 8590 }, 8591 "vkGetPhysicalDeviceMemoryProperties2": { 8592 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 8593 { 8594 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter", 8595 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 8596 }, 8597 { 8598 "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter", 8599 "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceMemoryProperties2\">VkPhysicalDeviceMemoryProperties2</a> structure" 8600 } 8601 ] 8602 }, 8603 "VkPhysicalDeviceMemoryProperties2": { 8604 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 8605 { 8606 "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType", 8607 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>" 8608 }, 8609 { 8610 "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext", 8611 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceMemoryBudgetPropertiesEXT\">VkPhysicalDeviceMemoryBudgetPropertiesEXT</a>" 8612 }, 8613 { 8614 "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-unique", 8615 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 8616 } 8617 ] 8618 }, 8619 "VkPhysicalDeviceMemoryBudgetPropertiesEXT": { 8620 "(VK_EXT_memory_budget)": [ 8621 { 8622 "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType", 8623 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>" 8624 } 8625 ] 8626 }, 8627 "vkAllocateMemory": { 8628 "core": [ 8629 { 8630 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713", 8631 "text": " <code>pAllocateInfo->allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[memindex].size where <code>memindex</code> = <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypes</code>[pAllocateInfo->memoryTypeIndex].heapIndex as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from" 8632 }, 8633 { 8634 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714", 8635 "text": " <code>pAllocateInfo->memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from" 8636 }, 8637 { 8638 "vuid": "VUID-vkAllocateMemory-maxMemoryAllocationCount-04101", 8639 "text": " There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxMemoryAllocationCount</code> device memory allocations currently allocated on the device." 8640 }, 8641 { 8642 "vuid": "VUID-vkAllocateMemory-device-parameter", 8643 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 8644 }, 8645 { 8646 "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter", 8647 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> structure" 8648 }, 8649 { 8650 "vuid": "VUID-vkAllocateMemory-pAllocator-parameter", 8651 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 8652 }, 8653 { 8654 "vuid": "VUID-vkAllocateMemory-pMemory-parameter", 8655 "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 8656 } 8657 ], 8658 "(VK_AMD_device_coherent_memory)": [ 8659 { 8660 "vuid": "VUID-vkAllocateMemory-deviceCoherentMemory-02790", 8661 "text": " If the <a href=\"#features-deviceCoherentMemory\"><code>deviceCoherentMemory</code></a> feature is not enabled, <code>pAllocateInfo->memoryTypeIndex</code> <strong class=\"purple\">must</strong> not identify a memory type supporting <code>VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD</code>" 8662 } 8663 ] 8664 }, 8665 "VkMemoryAllocateInfo": { 8666 "!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 8667 { 8668 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638", 8669 "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8670 } 8671 ], 8672 "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [ 8673 { 8674 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639", 8675 "text": " If the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code> structure, and any of the handle types specified in <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a dedicated allocation, as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code> or <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties.externalMemoryFeatures</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]" 8676 } 8677 ], 8678 "(VK_KHR_external_memory)+(VK_NV_external_memory)": [ 8679 { 8680 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640", 8681 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a> structure" 8682 } 8683 ], 8684 "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [ 8685 { 8686 "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641", 8687 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a> structure, it <strong class=\"purple\">must</strong> not include a <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a> structure" 8688 } 8689 ], 8690 "(VK_KHR_external_memory_fd)": [ 8691 { 8692 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742", 8693 "text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the payload being imported was created." 8694 }, 8695 { 8696 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648", 8697 "text": " If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryFdPropertiesKHR\">vkGetMemoryFdPropertiesKHR</a>" 8698 } 8699 ], 8700 "(VK_KHR_external_memory+VK_KHR_device_group)": [ 8701 { 8702 "vuid": "VUID-VkMemoryAllocateInfo-None-00643", 8703 "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a> <strong class=\"purple\">must</strong> match that specified when the payload being imported was allocated." 8704 }, 8705 { 8706 "vuid": "VUID-VkMemoryAllocateInfo-None-00644", 8707 "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the payload was originally allocated." 8708 } 8709 ], 8710 "(VK_KHR_external_memory_win32)": [ 8711 { 8712 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645", 8713 "text": " If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryWin32HandlePropertiesKHR\">vkGetMemoryWin32HandlePropertiesKHR</a>" 8714 }, 8715 { 8716 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743", 8717 "text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the payload being imported was created." 8718 }, 8719 { 8720 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647", 8721 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the payload was extracted." 8722 } 8723 ], 8724 "(VK_VERSION_1_1)": [ 8725 { 8726 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872", 8727 "text": " If the protected memory feature is not enabled, the <code>VkMemoryAllocateInfo</code>::<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not indicate a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 8728 } 8729 ], 8730 "(VK_EXT_external_memory_host)": [ 8731 { 8732 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744", 8733 "text": " If the parameters define an import operation and the external handle is a host pointer, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryHostPointerPropertiesEXT\">vkGetMemoryHostPointerPropertiesEXT</a>" 8734 }, 8735 { 8736 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745", 8737 "text": " If the parameters define an import operation and the external handle is a host pointer, <code>allocationSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>" 8738 } 8739 ], 8740 "(VK_EXT_external_memory_host)+(VK_NV_dedicated_allocation)": [ 8741 { 8742 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02805", 8743 "text": " If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 8744 } 8745 ], 8746 "(VK_EXT_external_memory_host)+(VK_KHR_dedicated_allocation)": [ 8747 { 8748 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02806", 8749 "text": " If the parameters define an import operation and the external handle is a host pointer, the <code>pNext</code> chain <strong class=\"purple\">must</strong> not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with either its <code>image</code> or <code>buffer</code> field set to a value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 8750 } 8751 ], 8752 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 8753 { 8754 "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383", 8755 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be the size returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer" 8756 }, 8757 { 8758 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384", 8759 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain does not include a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer <strong class=\"purple\">must</strong> have a <code>AHardwareBuffer_Desc</code>::<code>format</code> of <code>AHARDWAREBUFFER_FORMAT_BLOB</code> and a <code>AHardwareBuffer_Desc</code>::<code>usage</code> that includes <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>" 8760 }, 8761 { 8762 "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385", 8763 "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer" 8764 }, 8765 { 8766 "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874", 8767 "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain includes a <code>VkExportMemoryAllocateInfo</code> structure with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 8768 }, 8769 { 8770 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386", 8771 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer’s <code>AHardwareBuffer</code>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER</code> or <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>" 8772 }, 8773 { 8774 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387", 8775 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> in <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>::<code>format</code> for the Android hardware buffer" 8776 }, 8777 { 8778 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388", 8779 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the Android hardware buffer’s <code>AHardwareBuffer_Desc</code> <strong class=\"purple\">must</strong> be identical" 8780 }, 8781 { 8782 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389", 8783 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer’s <code>AHardwareBuffer</code>::<code>usage</code> includes <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have a complete mipmap chain" 8784 }, 8785 { 8786 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586", 8787 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer’s <code>AHardwareBuffer</code>::<code>usage</code> does not include <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have exactly one mipmap level" 8788 }, 8789 { 8790 "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390", 8791 "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each bit set in the usage of <code>image</code> <strong class=\"purple\">must</strong> be listed in <a href=\"#memory-external-android-hardware-buffer-usage\">AHardwareBuffer Usage Equivalence</a>, and if there is a corresponding <code>AHARDWAREBUFFER_USAGE</code> bit listed that bit <strong class=\"purple\">must</strong> be included in the Android hardware buffer’s <code>AHardwareBuffer_Desc</code>::<code>usage</code>" 8792 } 8793 ], 8794 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 8795 { 8796 "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03329", 8797 "text": " If <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>" 8798 }, 8799 { 8800 "vuid": "VUID-VkMemoryAllocateInfo-flags-03330", 8801 "text": " If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> feature <strong class=\"purple\">must</strong> be enabled" 8802 }, 8803 { 8804 "vuid": "VUID-VkMemoryAllocateInfo-flags-03331", 8805 "text": " If <code>VkMemoryAllocateFlagsInfo</code>::<code>flags</code> includes <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>, the <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled" 8806 }, 8807 { 8808 "vuid": "VUID-VkMemoryAllocateInfo-opaqueCaptureAddress-03333", 8809 "text": " If the parameters define an import operation, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero" 8810 } 8811 ], 8812 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)+(VK_EXT_external_memory_host)": [ 8813 { 8814 "vuid": "VUID-VkMemoryAllocateInfo-pNext-03332", 8815 "text": " If the <code>pNext</code> chain includes a <code>VkImportMemoryHostPointerInfoEXT</code> structure, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>::<code>opaqueCaptureAddress</code> <strong class=\"purple\">must</strong> be zero" 8816 } 8817 ], 8818 "core": [ 8819 { 8820 "vuid": "VUID-VkMemoryAllocateInfo-sType-sType", 8821 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>" 8822 }, 8823 { 8824 "vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext", 8825 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryWin32HandleInfoKHR\">VkExportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>, <a href=\"#VkMemoryOpaqueCaptureAddressAllocateInfo\">VkMemoryOpaqueCaptureAddressAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>" 8826 }, 8827 { 8828 "vuid": "VUID-VkMemoryAllocateInfo-sType-unique", 8829 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 8830 } 8831 ] 8832 }, 8833 "VkMemoryDedicatedAllocateInfo": { 8834 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 8835 { 8836 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432", 8837 "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 8838 }, 8839 { 8840 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434", 8841 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>" 8842 }, 8843 { 8844 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436", 8845 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> have been created without <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>flags</code>" 8846 }, 8847 { 8848 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType", 8849 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>" 8850 }, 8851 { 8852 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter", 8853 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 8854 }, 8855 { 8856 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter", 8857 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 8858 }, 8859 { 8860 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent", 8861 "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 8862 } 8863 ], 8864 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 8865 { 8866 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433", 8867 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image" 8868 }, 8869 { 8870 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435", 8871 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer" 8872 } 8873 ], 8874 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 8875 { 8876 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-02964", 8877 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the memory is not an imported Android Hardware Buffer, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image" 8878 }, 8879 { 8880 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-02965", 8881 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and the memory is not an imported Android Hardware Buffer, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer" 8882 } 8883 ], 8884 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [ 8885 { 8886 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876", 8887 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory" 8888 }, 8889 { 8890 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877", 8891 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory" 8892 } 8893 ], 8894 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [ 8895 { 8896 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878", 8897 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory" 8898 }, 8899 { 8900 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879", 8901 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory" 8902 } 8903 ], 8904 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [ 8905 { 8906 "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797", 8907 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>" 8908 } 8909 ] 8910 }, 8911 "VkDedicatedAllocationMemoryAllocateInfoNV": { 8912 "(VK_NV_dedicated_allocation)": [ 8913 { 8914 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649", 8915 "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 8916 }, 8917 { 8918 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650", 8919 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>" 8920 }, 8921 { 8922 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651", 8923 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>" 8924 }, 8925 { 8926 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652", 8927 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image" 8928 }, 8929 { 8930 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653", 8931 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer" 8932 }, 8933 { 8934 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType", 8935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>" 8936 }, 8937 { 8938 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter", 8939 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 8940 }, 8941 { 8942 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter", 8943 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 8944 }, 8945 { 8946 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent", 8947 "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 8948 } 8949 ], 8950 "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [ 8951 { 8952 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654", 8953 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory" 8954 }, 8955 { 8956 "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655", 8957 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory" 8958 } 8959 ] 8960 }, 8961 "VkMemoryPriorityAllocateInfoEXT": { 8962 "(VK_EXT_memory_priority)": [ 8963 { 8964 "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602", 8965 "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive" 8966 }, 8967 { 8968 "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType", 8969 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>" 8970 } 8971 ] 8972 }, 8973 "VkExportMemoryAllocateInfo": { 8974 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 8975 { 8976 "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656", 8977 "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>" 8978 }, 8979 { 8980 "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType", 8981 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>" 8982 }, 8983 { 8984 "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter", 8985 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values" 8986 } 8987 ] 8988 }, 8989 "VkExportMemoryWin32HandleInfoKHR": { 8990 "(VK_KHR_external_memory_win32)": [ 8991 { 8992 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657", 8993 "text": " If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, a <code>VkExportMemoryWin32HandleInfoKHR</code> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>" 8994 }, 8995 { 8996 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType", 8997 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>" 8998 }, 8999 { 9000 "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter", 9001 "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" 9002 } 9003 ] 9004 }, 9005 "VkImportMemoryWin32HandleInfoKHR": { 9006 "(VK_KHR_external_memory_win32)": [ 9007 { 9008 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658", 9009 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>" 9010 }, 9011 { 9012 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659", 9013 "text": " The memory from which <code>handle</code> was exported, or the memory named by <code>name</code> <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>" 9014 }, 9015 { 9016 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660", 9017 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle" 9018 }, 9019 { 9020 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439", 9021 "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9022 }, 9023 { 9024 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440", 9025 "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid memory resource of the type specified by <code>handleType</code>" 9026 }, 9027 { 9028 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661", 9029 "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>" 9030 }, 9031 { 9032 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441", 9033 "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9034 }, 9035 { 9036 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518", 9037 "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>" 9038 }, 9039 { 9040 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519", 9041 "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>" 9042 }, 9043 { 9044 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType", 9045 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>" 9046 }, 9047 { 9048 "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter", 9049 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 9050 } 9051 ] 9052 }, 9053 "vkGetMemoryWin32HandleKHR": { 9054 "(VK_KHR_external_memory_win32)": [ 9055 { 9056 "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter", 9057 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9058 }, 9059 { 9060 "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter", 9061 "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetWin32HandleInfoKHR\">VkMemoryGetWin32HandleInfoKHR</a> structure" 9062 }, 9063 { 9064 "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter", 9065 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" 9066 } 9067 ] 9068 }, 9069 "VkMemoryGetWin32HandleInfoKHR": { 9070 "(VK_KHR_external_memory_win32)": [ 9071 { 9072 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662", 9073 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created" 9074 }, 9075 { 9076 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663", 9077 "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetMemoryWin32HandleKHR\">vkGetMemoryWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>memory</code> and <code>handleType</code>" 9078 }, 9079 { 9080 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664", 9081 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle" 9082 }, 9083 { 9084 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType", 9085 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>" 9086 }, 9087 { 9088 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext", 9089 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9090 }, 9091 { 9092 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter", 9093 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9094 }, 9095 { 9096 "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter", 9097 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 9098 } 9099 ] 9100 }, 9101 "vkGetMemoryWin32HandlePropertiesKHR": { 9102 "(VK_KHR_external_memory_win32)": [ 9103 { 9104 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665", 9105 "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API" 9106 }, 9107 { 9108 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666", 9109 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque" 9110 }, 9111 { 9112 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter", 9113 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9114 }, 9115 { 9116 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter", 9117 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 9118 }, 9119 { 9120 "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter", 9121 "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryWin32HandlePropertiesKHR\">VkMemoryWin32HandlePropertiesKHR</a> structure" 9122 } 9123 ] 9124 }, 9125 "VkMemoryWin32HandlePropertiesKHR": { 9126 "(VK_KHR_external_memory_win32)": [ 9127 { 9128 "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType", 9129 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>" 9130 }, 9131 { 9132 "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext", 9133 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9134 } 9135 ] 9136 }, 9137 "VkImportMemoryFdInfoKHR": { 9138 "(VK_KHR_external_memory_fd)": [ 9139 { 9140 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667", 9141 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>" 9142 }, 9143 { 9144 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668", 9145 "text": " The memory from which <code>fd</code> was exported <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>" 9146 }, 9147 { 9148 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669", 9149 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle" 9150 }, 9151 { 9152 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670", 9153 "text": " If <code>handleType</code> is not <code>0</code>, <code>fd</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>" 9154 }, 9155 { 9156 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746", 9157 "text": " The memory represented by <code>fd</code> <strong class=\"purple\">must</strong> have been created from a physical device and driver that is compatible with <code>device</code> and <code>handleType</code>, as described in <a href=\"#external-memory-handle-types-compatibility\">External memory handle types compatibility</a>" 9158 }, 9159 { 9160 "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520", 9161 "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>" 9162 }, 9163 { 9164 "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType", 9165 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>" 9166 }, 9167 { 9168 "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter", 9169 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 9170 } 9171 ] 9172 }, 9173 "vkGetMemoryFdKHR": { 9174 "(VK_KHR_external_memory_fd)": [ 9175 { 9176 "vuid": "VUID-vkGetMemoryFdKHR-device-parameter", 9177 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9178 }, 9179 { 9180 "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter", 9181 "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetFdInfoKHR\">VkMemoryGetFdInfoKHR</a> structure" 9182 }, 9183 { 9184 "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter", 9185 "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>int</code> value" 9186 } 9187 ] 9188 }, 9189 "VkMemoryGetFdInfoKHR": { 9190 "(VK_KHR_external_memory_fd)": [ 9191 { 9192 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671", 9193 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created" 9194 }, 9195 { 9196 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672", 9197 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle" 9198 }, 9199 { 9200 "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType", 9201 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>" 9202 }, 9203 { 9204 "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext", 9205 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9206 }, 9207 { 9208 "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter", 9209 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9210 }, 9211 { 9212 "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter", 9213 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 9214 } 9215 ] 9216 }, 9217 "vkGetMemoryFdPropertiesKHR": { 9218 "(VK_KHR_external_memory_fd)": [ 9219 { 9220 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673", 9221 "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API" 9222 }, 9223 { 9224 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674", 9225 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>" 9226 }, 9227 { 9228 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter", 9229 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9230 }, 9231 { 9232 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter", 9233 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 9234 }, 9235 { 9236 "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter", 9237 "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryFdPropertiesKHR\">VkMemoryFdPropertiesKHR</a> structure" 9238 } 9239 ] 9240 }, 9241 "VkMemoryFdPropertiesKHR": { 9242 "(VK_KHR_external_memory_fd)": [ 9243 { 9244 "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType", 9245 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>" 9246 }, 9247 { 9248 "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext", 9249 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9250 } 9251 ] 9252 }, 9253 "VkImportMemoryHostPointerInfoEXT": { 9254 "(VK_EXT_external_memory_host)": [ 9255 { 9256 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747", 9257 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported in <a href=\"#VkExternalMemoryProperties\">VkExternalMemoryProperties</a>" 9258 }, 9259 { 9260 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748", 9261 "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>" 9262 }, 9263 { 9264 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749", 9265 "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>" 9266 }, 9267 { 9268 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750", 9269 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to" 9270 }, 9271 { 9272 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751", 9273 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host mapped foreign memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to" 9274 }, 9275 { 9276 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType", 9277 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>" 9278 }, 9279 { 9280 "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter", 9281 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 9282 } 9283 ] 9284 }, 9285 "vkGetMemoryHostPointerPropertiesEXT": { 9286 "(VK_EXT_external_memory_host)": [ 9287 { 9288 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752", 9289 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>" 9290 }, 9291 { 9292 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753", 9293 "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>" 9294 }, 9295 { 9296 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754", 9297 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host memory" 9298 }, 9299 { 9300 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755", 9301 "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host mapped foreign memory" 9302 }, 9303 { 9304 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter", 9305 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9306 }, 9307 { 9308 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter", 9309 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 9310 }, 9311 { 9312 "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter", 9313 "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryHostPointerPropertiesEXT\">VkMemoryHostPointerPropertiesEXT</a> structure" 9314 } 9315 ] 9316 }, 9317 "VkMemoryHostPointerPropertiesEXT": { 9318 "(VK_EXT_external_memory_host)": [ 9319 { 9320 "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType", 9321 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>" 9322 }, 9323 { 9324 "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext", 9325 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9326 } 9327 ] 9328 }, 9329 "VkImportAndroidHardwareBufferInfoANDROID": { 9330 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 9331 { 9332 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880", 9333 "text": " If <code>buffer</code> is not <code>NULL</code>, Android hardware buffers <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>" 9334 }, 9335 { 9336 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881", 9337 "text": " If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with <code>AHardwareBuffer_Desc</code>::<code>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>" 9338 }, 9339 { 9340 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType", 9341 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>" 9342 }, 9343 { 9344 "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter", 9345 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>AHardwareBuffer</code> value" 9346 } 9347 ] 9348 }, 9349 "vkGetMemoryAndroidHardwareBufferANDROID": { 9350 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 9351 { 9352 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter", 9353 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9354 }, 9355 { 9356 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter", 9357 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMemoryGetAndroidHardwareBufferInfoANDROID\">VkMemoryGetAndroidHardwareBufferInfoANDROID</a> structure" 9358 }, 9359 { 9360 "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter", 9361 "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to an <code>AHardwareBuffer</code> value" 9362 } 9363 ] 9364 }, 9365 "VkMemoryGetAndroidHardwareBufferInfoANDROID": { 9366 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 9367 { 9368 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882", 9369 "text": " <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created" 9370 }, 9371 { 9372 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883", 9373 "text": " If the <code>pNext</code> chain of the <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> used to allocate <code>memory</code> included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with non-<code>NULL</code> <code>image</code> member, then that <code>image</code> <strong class=\"purple\">must</strong> already be bound to <code>memory</code>" 9374 }, 9375 { 9376 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType", 9377 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>" 9378 }, 9379 { 9380 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext", 9381 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9382 }, 9383 { 9384 "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter", 9385 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9386 } 9387 ] 9388 }, 9389 "vkGetAndroidHardwareBufferPropertiesANDROID": { 9390 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 9391 { 9392 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884", 9393 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with at least one of the <code>AHARDWAREBUFFER_USAGE_GPU_</code>* flags in its <code>AHardwareBuffer_Desc</code>::<code>usage</code>" 9394 }, 9395 { 9396 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter", 9397 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9398 }, 9399 { 9400 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter", 9401 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value" 9402 }, 9403 { 9404 "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter", 9405 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAndroidHardwareBufferPropertiesANDROID\">VkAndroidHardwareBufferPropertiesANDROID</a> structure" 9406 } 9407 ] 9408 }, 9409 "VkAndroidHardwareBufferPropertiesANDROID": { 9410 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 9411 { 9412 "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType", 9413 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>" 9414 }, 9415 { 9416 "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext", 9417 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>" 9418 }, 9419 { 9420 "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-unique", 9421 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 9422 } 9423 ] 9424 }, 9425 "VkAndroidHardwareBufferFormatPropertiesANDROID": { 9426 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 9427 { 9428 "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType", 9429 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>" 9430 } 9431 ] 9432 }, 9433 "VkExportMemoryAllocateInfoNV": { 9434 "(VK_NV_external_memory)": [ 9435 { 9436 "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType", 9437 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>" 9438 }, 9439 { 9440 "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter", 9441 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 9442 } 9443 ] 9444 }, 9445 "VkExportMemoryWin32HandleInfoNV": { 9446 "(VK_NV_external_memory_win32)": [ 9447 { 9448 "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType", 9449 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>" 9450 }, 9451 { 9452 "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter", 9453 "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value" 9454 } 9455 ] 9456 }, 9457 "VkImportMemoryWin32HandleInfoNV": { 9458 "(VK_NV_external_memory_win32)": [ 9459 { 9460 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327", 9461 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set" 9462 }, 9463 { 9464 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328", 9465 "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>" 9466 }, 9467 { 9468 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType", 9469 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>" 9470 }, 9471 { 9472 "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter", 9473 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 9474 } 9475 ] 9476 }, 9477 "vkGetMemoryWin32HandleNV": { 9478 "(VK_NV_external_memory_win32)": [ 9479 { 9480 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326", 9481 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a flag specified in <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>::<code>handleTypes</code> when allocating <code>memory</code>" 9482 }, 9483 { 9484 "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter", 9485 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9486 }, 9487 { 9488 "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter", 9489 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9490 }, 9491 { 9492 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter", 9493 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 9494 }, 9495 { 9496 "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask", 9497 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 9498 }, 9499 { 9500 "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter", 9501 "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value" 9502 }, 9503 { 9504 "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent", 9505 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9506 } 9507 ] 9508 }, 9509 "VkMemoryAllocateFlagsInfo": { 9510 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 9511 { 9512 "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675", 9513 "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask" 9514 }, 9515 { 9516 "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676", 9517 "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 9518 }, 9519 { 9520 "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType", 9521 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>" 9522 }, 9523 { 9524 "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter", 9525 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values" 9526 } 9527 ] 9528 }, 9529 "VkMemoryOpaqueCaptureAddressAllocateInfo": { 9530 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 9531 { 9532 "vuid": "VUID-VkMemoryOpaqueCaptureAddressAllocateInfo-sType-sType", 9533 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO</code>" 9534 } 9535 ] 9536 }, 9537 "vkFreeMemory": { 9538 "core": [ 9539 { 9540 "vuid": "VUID-vkFreeMemory-memory-00677", 9541 "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution" 9542 }, 9543 { 9544 "vuid": "VUID-vkFreeMemory-device-parameter", 9545 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9546 }, 9547 { 9548 "vuid": "VUID-vkFreeMemory-memory-parameter", 9549 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9550 }, 9551 { 9552 "vuid": "VUID-vkFreeMemory-pAllocator-parameter", 9553 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 9554 }, 9555 { 9556 "vuid": "VUID-vkFreeMemory-memory-parent", 9557 "text": " If <code>memory</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9558 } 9559 ] 9560 }, 9561 "vkMapMemory": { 9562 "core": [ 9563 { 9564 "vuid": "VUID-vkMapMemory-memory-00678", 9565 "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped" 9566 }, 9567 { 9568 "vuid": "VUID-vkMapMemory-offset-00679", 9569 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 9570 }, 9571 { 9572 "vuid": "VUID-vkMapMemory-size-00680", 9573 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 9574 }, 9575 { 9576 "vuid": "VUID-vkMapMemory-size-00681", 9577 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the <code>memory</code> minus <code>offset</code>" 9578 }, 9579 { 9580 "vuid": "VUID-vkMapMemory-memory-00682", 9581 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code>" 9582 }, 9583 { 9584 "vuid": "VUID-vkMapMemory-device-parameter", 9585 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9586 }, 9587 { 9588 "vuid": "VUID-vkMapMemory-memory-parameter", 9589 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9590 }, 9591 { 9592 "vuid": "VUID-vkMapMemory-flags-zerobitmask", 9593 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 9594 }, 9595 { 9596 "vuid": "VUID-vkMapMemory-ppData-parameter", 9597 "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value" 9598 }, 9599 { 9600 "vuid": "VUID-vkMapMemory-memory-parent", 9601 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9602 } 9603 ], 9604 "(VK_KHR_device_group)": [ 9605 { 9606 "vuid": "VUID-vkMapMemory-memory-00683", 9607 "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances" 9608 } 9609 ] 9610 }, 9611 "vkFlushMappedMemoryRanges": { 9612 "core": [ 9613 { 9614 "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter", 9615 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9616 }, 9617 { 9618 "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter", 9619 "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures" 9620 }, 9621 { 9622 "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength", 9623 "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 9624 } 9625 ] 9626 }, 9627 "vkInvalidateMappedMemoryRanges": { 9628 "core": [ 9629 { 9630 "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter", 9631 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9632 }, 9633 { 9634 "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter", 9635 "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <a href=\"#VkMappedMemoryRange\">VkMappedMemoryRange</a> structures" 9636 }, 9637 { 9638 "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength", 9639 "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 9640 } 9641 ] 9642 }, 9643 "VkMappedMemoryRange": { 9644 "core": [ 9645 { 9646 "vuid": "VUID-VkMappedMemoryRange-memory-00684", 9647 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped" 9648 }, 9649 { 9650 "vuid": "VUID-VkMappedMemoryRange-size-00685", 9651 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> specify a range contained within the currently mapped range of <code>memory</code>" 9652 }, 9653 { 9654 "vuid": "VUID-VkMappedMemoryRange-size-00686", 9655 "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> <strong class=\"purple\">must</strong> be within the currently mapped range of <code>memory</code>" 9656 }, 9657 { 9658 "vuid": "VUID-VkMappedMemoryRange-size-01389", 9659 "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, the end of the current mapping of <code>memory</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code> bytes from the beginning of the memory object" 9660 }, 9661 { 9662 "vuid": "VUID-VkMappedMemoryRange-offset-00687", 9663 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>" 9664 }, 9665 { 9666 "vuid": "VUID-VkMappedMemoryRange-size-01390", 9667 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> either be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>, or <code>offset</code> plus <code>size</code> <strong class=\"purple\">must</strong> equal the size of <code>memory</code>" 9668 }, 9669 { 9670 "vuid": "VUID-VkMappedMemoryRange-sType-sType", 9671 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>" 9672 }, 9673 { 9674 "vuid": "VUID-VkMappedMemoryRange-pNext-pNext", 9675 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9676 }, 9677 { 9678 "vuid": "VUID-VkMappedMemoryRange-memory-parameter", 9679 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9680 } 9681 ] 9682 }, 9683 "vkUnmapMemory": { 9684 "core": [ 9685 { 9686 "vuid": "VUID-vkUnmapMemory-memory-00689", 9687 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped" 9688 }, 9689 { 9690 "vuid": "VUID-vkUnmapMemory-device-parameter", 9691 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9692 }, 9693 { 9694 "vuid": "VUID-vkUnmapMemory-memory-parameter", 9695 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9696 }, 9697 { 9698 "vuid": "VUID-vkUnmapMemory-memory-parent", 9699 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9700 } 9701 ] 9702 }, 9703 "vkGetDeviceMemoryCommitment": { 9704 "core": [ 9705 { 9706 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690", 9707 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code>" 9708 }, 9709 { 9710 "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter", 9711 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9712 }, 9713 { 9714 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter", 9715 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9716 }, 9717 { 9718 "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter", 9719 "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value" 9720 }, 9721 { 9722 "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent", 9723 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9724 } 9725 ] 9726 }, 9727 "vkGetDeviceGroupPeerMemoryFeatures": { 9728 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 9729 { 9730 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691", 9731 "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>" 9732 }, 9733 { 9734 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692", 9735 "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index" 9736 }, 9737 { 9738 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693", 9739 "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index" 9740 }, 9741 { 9742 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694", 9743 "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>" 9744 }, 9745 { 9746 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter", 9747 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9748 }, 9749 { 9750 "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter", 9751 "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value" 9752 } 9753 ] 9754 }, 9755 "vkGetDeviceMemoryOpaqueCaptureAddress": { 9756 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 9757 { 9758 "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-None-03334", 9759 "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled" 9760 }, 9761 { 9762 "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-03335", 9763 "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled" 9764 }, 9765 { 9766 "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-device-parameter", 9767 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9768 }, 9769 { 9770 "vuid": "VUID-vkGetDeviceMemoryOpaqueCaptureAddress-pInfo-parameter", 9771 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDeviceMemoryOpaqueCaptureAddressInfo\">VkDeviceMemoryOpaqueCaptureAddressInfo</a> structure" 9772 } 9773 ] 9774 }, 9775 "VkDeviceMemoryOpaqueCaptureAddressInfo": { 9776 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 9777 { 9778 "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-03336", 9779 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code>" 9780 }, 9781 { 9782 "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-sType-sType", 9783 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO</code>" 9784 }, 9785 { 9786 "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-pNext-pNext", 9787 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9788 }, 9789 { 9790 "vuid": "VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-memory-parameter", 9791 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 9792 } 9793 ] 9794 }, 9795 "vkCreateBuffer": { 9796 "core": [ 9797 { 9798 "vuid": "VUID-vkCreateBuffer-flags-00911", 9799 "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>" 9800 }, 9801 { 9802 "vuid": "VUID-vkCreateBuffer-device-parameter", 9803 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9804 }, 9805 { 9806 "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter", 9807 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a> structure" 9808 }, 9809 { 9810 "vuid": "VUID-vkCreateBuffer-pAllocator-parameter", 9811 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 9812 }, 9813 { 9814 "vuid": "VUID-vkCreateBuffer-pBuffer-parameter", 9815 "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBuffer\">VkBuffer</a> handle" 9816 } 9817 ] 9818 }, 9819 "VkBufferCreateInfo": { 9820 "core": [ 9821 { 9822 "vuid": "VUID-VkBufferCreateInfo-size-00912", 9823 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 9824 }, 9825 { 9826 "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913", 9827 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values" 9828 }, 9829 { 9830 "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914", 9831 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 9832 }, 9833 { 9834 "vuid": "VUID-VkBufferCreateInfo-flags-00915", 9835 "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>" 9836 }, 9837 { 9838 "vuid": "VUID-VkBufferCreateInfo-flags-00916", 9839 "text": " If the <a href=\"#features-sparseResidencyBuffer\">sparse buffer residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>" 9840 }, 9841 { 9842 "vuid": "VUID-VkBufferCreateInfo-flags-00917", 9843 "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>" 9844 }, 9845 { 9846 "vuid": "VUID-VkBufferCreateInfo-flags-00918", 9847 "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>" 9848 }, 9849 { 9850 "vuid": "VUID-VkBufferCreateInfo-sType-sType", 9851 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>" 9852 }, 9853 { 9854 "vuid": "VUID-VkBufferCreateInfo-pNext-pNext", 9855 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>, <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>" 9856 }, 9857 { 9858 "vuid": "VUID-VkBufferCreateInfo-sType-unique", 9859 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 9860 }, 9861 { 9862 "vuid": "VUID-VkBufferCreateInfo-flags-parameter", 9863 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values" 9864 }, 9865 { 9866 "vuid": "VUID-VkBufferCreateInfo-usage-parameter", 9867 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values" 9868 }, 9869 { 9870 "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask", 9871 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 9872 }, 9873 { 9874 "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter", 9875 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value" 9876 } 9877 ], 9878 "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 9879 { 9880 "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391", 9881 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 9882 } 9883 ], 9884 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 9885 { 9886 "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419", 9887 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 9888 } 9889 ], 9890 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 9891 { 9892 "vuid": "VUID-VkBufferCreateInfo-pNext-00920", 9893 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo->handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>" 9894 } 9895 ], 9896 "(VK_VERSION_1_1)": [ 9897 { 9898 "vuid": "VUID-VkBufferCreateInfo-flags-01887", 9899 "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>" 9900 }, 9901 { 9902 "vuid": "VUID-VkBufferCreateInfo-None-01888", 9903 "text": " If any of the bits <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set" 9904 } 9905 ], 9906 "(VK_NV_dedicated_allocation)": [ 9907 { 9908 "vuid": "VUID-VkBufferCreateInfo-pNext-01571", 9909 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a> structure, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>" 9910 } 9911 ], 9912 "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_EXT_buffer_device_address)": [ 9913 { 9914 "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604", 9915 "text": " If <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>" 9916 } 9917 ], 9918 "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)+(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 9919 { 9920 "vuid": "VUID-VkBufferCreateInfo-opaqueCaptureAddress-03337", 9921 "text": " If <a href=\"#VkBufferOpaqueCaptureAddressCreateInfo\">VkBufferOpaqueCaptureAddressCreateInfo</a>::<code>opaqueCaptureAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>" 9922 } 9923 ], 9924 "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [ 9925 { 9926 "vuid": "VUID-VkBufferCreateInfo-flags-03338", 9927 "text": " If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> or <a href=\"#features-bufferDeviceAddressCaptureReplayEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddressCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled" 9928 } 9929 ] 9930 }, 9931 "VkDedicatedAllocationBufferCreateInfoNV": { 9932 "(VK_NV_dedicated_allocation)": [ 9933 { 9934 "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType", 9935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>" 9936 } 9937 ] 9938 }, 9939 "VkExternalMemoryBufferCreateInfo": { 9940 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 9941 { 9942 "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType", 9943 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>" 9944 }, 9945 { 9946 "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter", 9947 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values" 9948 } 9949 ] 9950 }, 9951 "VkBufferOpaqueCaptureAddressCreateInfo": { 9952 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 9953 { 9954 "vuid": "VUID-VkBufferOpaqueCaptureAddressCreateInfo-sType-sType", 9955 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO</code>" 9956 } 9957 ] 9958 }, 9959 "VkBufferDeviceAddressCreateInfoEXT": { 9960 "(VK_EXT_buffer_device_address)": [ 9961 { 9962 "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType", 9963 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>" 9964 } 9965 ] 9966 }, 9967 "vkDestroyBuffer": { 9968 "core": [ 9969 { 9970 "vuid": "VUID-vkDestroyBuffer-buffer-00922", 9971 "text": " All submitted commands that refer to <code>buffer</code>, either directly or via a <code>VkBufferView</code>, <strong class=\"purple\">must</strong> have completed execution" 9972 }, 9973 { 9974 "vuid": "VUID-vkDestroyBuffer-buffer-00923", 9975 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 9976 }, 9977 { 9978 "vuid": "VUID-vkDestroyBuffer-buffer-00924", 9979 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 9980 }, 9981 { 9982 "vuid": "VUID-vkDestroyBuffer-device-parameter", 9983 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 9984 }, 9985 { 9986 "vuid": "VUID-vkDestroyBuffer-buffer-parameter", 9987 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 9988 }, 9989 { 9990 "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter", 9991 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 9992 }, 9993 { 9994 "vuid": "VUID-vkDestroyBuffer-buffer-parent", 9995 "text": " If <code>buffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 9996 } 9997 ] 9998 }, 9999 "vkCreateBufferView": { 10000 "core": [ 10001 { 10002 "vuid": "VUID-vkCreateBufferView-device-parameter", 10003 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 10004 }, 10005 { 10006 "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter", 10007 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferViewCreateInfo\">VkBufferViewCreateInfo</a> structure" 10008 }, 10009 { 10010 "vuid": "VUID-vkCreateBufferView-pAllocator-parameter", 10011 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 10012 }, 10013 { 10014 "vuid": "VUID-vkCreateBufferView-pView-parameter", 10015 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkBufferView\">VkBufferView</a> handle" 10016 } 10017 ] 10018 }, 10019 "VkBufferViewCreateInfo": { 10020 "core": [ 10021 { 10022 "vuid": "VUID-VkBufferViewCreateInfo-offset-00925", 10023 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 10024 }, 10025 { 10026 "vuid": "VUID-VkBufferViewCreateInfo-range-00928", 10027 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10028 }, 10029 { 10030 "vuid": "VUID-VkBufferViewCreateInfo-range-00929", 10031 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be an integer multiple of the texel block size of <code>format</code>" 10032 }, 10033 { 10034 "vuid": "VUID-VkBufferViewCreateInfo-range-00930", 10035 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">({lfloor}<code>range</code> / (texel block size){rfloor} {times} (texels per block))</span> where texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>" 10036 }, 10037 { 10038 "vuid": "VUID-VkBufferViewCreateInfo-offset-00931", 10039 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the sum of <code>offset</code> and <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 10040 }, 10041 { 10042 "vuid": "VUID-VkBufferViewCreateInfo-range-04059", 10043 "text": " If <code>range</code> is equal to <code>VK_WHOLE_SIZE</code>, the number of texel buffer elements given by <span class=\"eq\">({lfloor}(size - <code>offset</code>) / (texel block size){rfloor} {times} (texels per block))</span> where size is the size of <code>buffer</code>, and texel block size and texels per block are as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table for <code>format</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>" 10044 }, 10045 { 10046 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932", 10047 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>" 10048 }, 10049 { 10050 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933", 10051 "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for uniform texel buffers, as specified by the <code>VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 10052 }, 10053 { 10054 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934", 10055 "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage texel buffers, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 10056 }, 10057 { 10058 "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935", 10059 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 10060 }, 10061 { 10062 "vuid": "VUID-VkBufferViewCreateInfo-sType-sType", 10063 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>" 10064 }, 10065 { 10066 "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext", 10067 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10068 }, 10069 { 10070 "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask", 10071 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 10072 }, 10073 { 10074 "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter", 10075 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 10076 }, 10077 { 10078 "vuid": "VUID-VkBufferViewCreateInfo-format-parameter", 10079 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 10080 } 10081 ], 10082 "!(VK_EXT_texel_buffer_alignment)": [ 10083 { 10084 "vuid": "VUID-VkBufferViewCreateInfo-offset-00926", 10085 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>" 10086 } 10087 ], 10088 "(VK_EXT_texel_buffer_alignment)": [ 10089 { 10090 "vuid": "VUID-VkBufferViewCreateInfo-offset-02749", 10091 "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is not enabled, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>" 10092 }, 10093 { 10094 "vuid": "VUID-VkBufferViewCreateInfo-buffer-02750", 10095 "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>storageTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead" 10096 }, 10097 { 10098 "vuid": "VUID-VkBufferViewCreateInfo-buffer-02751", 10099 "text": " If the <a href=\"#features-texelBufferAlignment\">texelBufferAlignment</a> feature is enabled and if <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of the lesser of <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetAlignmentBytes</code> or, if <a href=\"#VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT\">VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT</a>::<code>uniformTexelBufferOffsetSingleTexelAlignment</code> is <code>VK_TRUE</code>, the size of a texel of the requested <code>format</code>. If the size of a texel is a multiple of three bytes, then the size of a single component of <code>format</code> is used instead" 10100 } 10101 ] 10102 }, 10103 "vkDestroyBufferView": { 10104 "core": [ 10105 { 10106 "vuid": "VUID-vkDestroyBufferView-bufferView-00936", 10107 "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution" 10108 }, 10109 { 10110 "vuid": "VUID-vkDestroyBufferView-bufferView-00937", 10111 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 10112 }, 10113 { 10114 "vuid": "VUID-vkDestroyBufferView-bufferView-00938", 10115 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10116 }, 10117 { 10118 "vuid": "VUID-vkDestroyBufferView-device-parameter", 10119 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 10120 }, 10121 { 10122 "vuid": "VUID-vkDestroyBufferView-bufferView-parameter", 10123 "text": " If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBufferView\">VkBufferView</a> handle" 10124 }, 10125 { 10126 "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter", 10127 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 10128 }, 10129 { 10130 "vuid": "VUID-vkDestroyBufferView-bufferView-parent", 10131 "text": " If <code>bufferView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10132 } 10133 ] 10134 }, 10135 "vkCreateImage": { 10136 "core": [ 10137 { 10138 "vuid": "VUID-vkCreateImage-flags-00939", 10139 "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkImage</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>" 10140 }, 10141 { 10142 "vuid": "VUID-vkCreateImage-device-parameter", 10143 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 10144 }, 10145 { 10146 "vuid": "VUID-vkCreateImage-pCreateInfo-parameter", 10147 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure" 10148 }, 10149 { 10150 "vuid": "VUID-vkCreateImage-pAllocator-parameter", 10151 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 10152 }, 10153 { 10154 "vuid": "VUID-vkCreateImage-pImage-parameter", 10155 "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImage\">VkImage</a> handle" 10156 } 10157 ] 10158 }, 10159 "VkImageCreateInfo": { 10160 "core": [ 10161 { 10162 "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251", 10163 "text": " Each of the following values (as described in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> not be undefined <code>imageCreateMaxMipLevels</code>, <code>imageCreateMaxArrayLayers</code>, <code>imageCreateMaxExtent</code>, and <code>imageCreateSampleCounts</code>" 10164 }, 10165 { 10166 "vuid": "VUID-VkImageCreateInfo-sharingMode-00941", 10167 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values" 10168 }, 10169 { 10170 "vuid": "VUID-VkImageCreateInfo-sharingMode-00942", 10171 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 10172 }, 10173 { 10174 "vuid": "VUID-VkImageCreateInfo-extent-00944", 10175 "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10176 }, 10177 { 10178 "vuid": "VUID-VkImageCreateInfo-extent-00945", 10179 "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10180 }, 10181 { 10182 "vuid": "VUID-VkImageCreateInfo-extent-00946", 10183 "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10184 }, 10185 { 10186 "vuid": "VUID-VkImageCreateInfo-mipLevels-00947", 10187 "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10188 }, 10189 { 10190 "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948", 10191 "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10192 }, 10193 { 10194 "vuid": "VUID-VkImageCreateInfo-flags-00949", 10195 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 10196 }, 10197 { 10198 "vuid": "VUID-VkImageCreateInfo-extent-02252", 10199 "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.width</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)" 10200 }, 10201 { 10202 "vuid": "VUID-VkImageCreateInfo-extent-02253", 10203 "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.height</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)" 10204 }, 10205 { 10206 "vuid": "VUID-VkImageCreateInfo-extent-02254", 10207 "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.depth</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)" 10208 }, 10209 { 10210 "vuid": "VUID-VkImageCreateInfo-imageType-00954", 10211 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be equal and <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than or equal to 6" 10212 }, 10213 { 10214 "vuid": "VUID-VkImageCreateInfo-imageType-00956", 10215 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, both <code>extent.height</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 10216 }, 10217 { 10218 "vuid": "VUID-VkImageCreateInfo-imageType-00957", 10219 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 10220 }, 10221 { 10222 "vuid": "VUID-VkImageCreateInfo-mipLevels-00958", 10223 "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>" 10224 }, 10225 { 10226 "vuid": "VUID-VkImageCreateInfo-mipLevels-02255", 10227 "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxMipLevels</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)" 10228 }, 10229 { 10230 "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256", 10231 "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxArrayLayers</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)" 10232 }, 10233 { 10234 "vuid": "VUID-VkImageCreateInfo-imageType-00961", 10235 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>" 10236 }, 10237 { 10238 "vuid": "VUID-VkImageCreateInfo-samples-02257", 10239 "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, then <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be equal to <code>1</code>, and <code>imageCreateMaybeLinear</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> be <code>false</code>," 10240 }, 10241 { 10242 "vuid": "VUID-VkImageCreateInfo-usage-00963", 10243 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set" 10244 }, 10245 { 10246 "vuid": "VUID-VkImageCreateInfo-usage-00964", 10247 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>" 10248 }, 10249 { 10250 "vuid": "VUID-VkImageCreateInfo-usage-00965", 10251 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>" 10252 }, 10253 { 10254 "vuid": "VUID-VkImageCreateInfo-usage-00966", 10255 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> also contain at least one of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 10256 }, 10257 { 10258 "vuid": "VUID-VkImageCreateInfo-samples-02258", 10259 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>imageCreateSampleCounts</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)" 10260 }, 10261 { 10262 "vuid": "VUID-VkImageCreateInfo-usage-00968", 10263 "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, and <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>" 10264 }, 10265 { 10266 "vuid": "VUID-VkImageCreateInfo-flags-00969", 10267 "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>" 10268 }, 10269 { 10270 "vuid": "VUID-VkImageCreateInfo-flags-01924", 10271 "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" 10272 }, 10273 { 10274 "vuid": "VUID-VkImageCreateInfo-tiling-04121", 10275 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 10276 }, 10277 { 10278 "vuid": "VUID-VkImageCreateInfo-imageType-00970", 10279 "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 10280 }, 10281 { 10282 "vuid": "VUID-VkImageCreateInfo-imageType-00971", 10283 "text": " If the <a href=\"#features-sparseResidencyImage2D\">sparse residency for 2D images</a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 10284 }, 10285 { 10286 "vuid": "VUID-VkImageCreateInfo-imageType-00972", 10287 "text": " If the <a href=\"#features-sparseResidencyImage3D\">sparse residency for 3D images</a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 10288 }, 10289 { 10290 "vuid": "VUID-VkImageCreateInfo-imageType-00973", 10291 "text": " If the <a href=\"#features-sparseResidency2Samples\">sparse residency for images with 2 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_2_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 10292 }, 10293 { 10294 "vuid": "VUID-VkImageCreateInfo-imageType-00974", 10295 "text": " If the <a href=\"#features-sparseResidency4Samples\">sparse residency for images with 4 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_4_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 10296 }, 10297 { 10298 "vuid": "VUID-VkImageCreateInfo-imageType-00975", 10299 "text": " If the <a href=\"#features-sparseResidency8Samples\">sparse residency for images with 8 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_8_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 10300 }, 10301 { 10302 "vuid": "VUID-VkImageCreateInfo-imageType-00976", 10303 "text": " If the <a href=\"#features-sparseResidency16Samples\">sparse residency for images with 16 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_16_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>" 10304 }, 10305 { 10306 "vuid": "VUID-VkImageCreateInfo-flags-00987", 10307 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>" 10308 }, 10309 { 10310 "vuid": "VUID-VkImageCreateInfo-None-01925", 10311 "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not also be set" 10312 }, 10313 { 10314 "vuid": "VUID-VkImageCreateInfo-initialLayout-00993", 10315 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>" 10316 }, 10317 { 10318 "vuid": "VUID-VkImageCreateInfo-sType-sType", 10319 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>" 10320 }, 10321 { 10322 "vuid": "VUID-VkImageCreateInfo-pNext-pNext", 10323 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a>, <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>, or <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>" 10324 }, 10325 { 10326 "vuid": "VUID-VkImageCreateInfo-sType-unique", 10327 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 10328 }, 10329 { 10330 "vuid": "VUID-VkImageCreateInfo-flags-parameter", 10331 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 10332 }, 10333 { 10334 "vuid": "VUID-VkImageCreateInfo-imageType-parameter", 10335 "text": " <code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 10336 }, 10337 { 10338 "vuid": "VUID-VkImageCreateInfo-format-parameter", 10339 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 10340 }, 10341 { 10342 "vuid": "VUID-VkImageCreateInfo-samples-parameter", 10343 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 10344 }, 10345 { 10346 "vuid": "VUID-VkImageCreateInfo-tiling-parameter", 10347 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 10348 }, 10349 { 10350 "vuid": "VUID-VkImageCreateInfo-usage-parameter", 10351 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 10352 }, 10353 { 10354 "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask", 10355 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 10356 }, 10357 { 10358 "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter", 10359 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value" 10360 }, 10361 { 10362 "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter", 10363 "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 10364 } 10365 ], 10366 "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 10367 { 10368 "vuid": "VUID-VkImageCreateInfo-sharingMode-01392", 10369 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 10370 } 10371 ], 10372 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 10373 { 10374 "vuid": "VUID-VkImageCreateInfo-sharingMode-01420", 10375 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 10376 } 10377 ], 10378 "!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 10379 { 10380 "vuid": "VUID-VkImageCreateInfo-format-00943", 10381 "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>" 10382 } 10383 ], 10384 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 10385 { 10386 "vuid": "VUID-VkImageCreateInfo-pNext-01974", 10387 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure, and its <code>externalFormat</code> member is non-zero the <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>" 10388 }, 10389 { 10390 "vuid": "VUID-VkImageCreateInfo-pNext-01975", 10391 "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure, or does and its <code>externalFormat</code> member is <code>0</code>, the <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>" 10392 }, 10393 { 10394 "vuid": "VUID-VkImageCreateInfo-pNext-02393", 10395 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 10396 }, 10397 { 10398 "vuid": "VUID-VkImageCreateInfo-pNext-02394", 10399 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> either be <code>1</code> or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>" 10400 }, 10401 { 10402 "vuid": "VUID-VkImageCreateInfo-pNext-02396", 10403 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>" 10404 }, 10405 { 10406 "vuid": "VUID-VkImageCreateInfo-pNext-02397", 10407 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>usage</code> <strong class=\"purple\">must</strong> not include any usages except <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>" 10408 }, 10409 { 10410 "vuid": "VUID-VkImageCreateInfo-pNext-02398", 10411 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>" 10412 } 10413 ], 10414 "(VK_EXT_fragment_density_map)": [ 10415 { 10416 "vuid": "VUID-VkImageCreateInfo-flags-02557", 10417 "text": " If <code>flags</code> contains <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 10418 }, 10419 { 10420 "vuid": "VUID-VkImageCreateInfo-samples-02558", 10421 "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>" 10422 }, 10423 { 10424 "vuid": "VUID-VkImageCreateInfo-usage-02559", 10425 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\right\\rceil\\)" 10426 }, 10427 { 10428 "vuid": "VUID-VkImageCreateInfo-usage-02560", 10429 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\left\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\right\\rceil\\)" 10430 }, 10431 { 10432 "vuid": "VUID-VkImageCreateInfo-flags-02565", 10433 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>" 10434 }, 10435 { 10436 "vuid": "VUID-VkImageCreateInfo-flags-02566", 10437 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 10438 }, 10439 { 10440 "vuid": "VUID-VkImageCreateInfo-flags-02567", 10441 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>" 10442 }, 10443 { 10444 "vuid": "VUID-VkImageCreateInfo-flags-02568", 10445 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be <code>1</code>" 10446 } 10447 ], 10448 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 10449 { 10450 "vuid": "VUID-VkImageCreateInfo-flags-00950", 10451 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code>" 10452 } 10453 ], 10454 "(VK_VERSION_1_1)": [ 10455 { 10456 "vuid": "VUID-VkImageCreateInfo-flags-01890", 10457 "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>" 10458 }, 10459 { 10460 "vuid": "VUID-VkImageCreateInfo-None-01891", 10461 "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set" 10462 } 10463 ], 10464 "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [ 10465 { 10466 "vuid": "VUID-VkImageCreateInfo-pNext-00988", 10467 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a> structure, it <strong class=\"purple\">must</strong> not contain a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure" 10468 } 10469 ], 10470 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 10471 { 10472 "vuid": "VUID-VkImageCreateInfo-pNext-00990", 10473 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with a <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> structure included in the <code>pNext</code> chain, with a <code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code>" 10474 } 10475 ], 10476 "(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [ 10477 { 10478 "vuid": "VUID-VkImageCreateInfo-pNext-00991", 10479 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a> structure, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalImageFormatPropertiesNV\">vkGetPhysicalDeviceExternalImageFormatPropertiesNV</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with <code>externalHandleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>::<code>handleTypes</code>" 10480 } 10481 ], 10482 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 10483 { 10484 "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421", 10485 "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>" 10486 }, 10487 { 10488 "vuid": "VUID-VkImageCreateInfo-flags-02259", 10489 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be one, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be one, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>. and <code>imageCreateMaybeLinear</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> be <code>false</code>" 10490 } 10491 ], 10492 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 10493 { 10494 "vuid": "VUID-VkImageCreateInfo-flags-01572", 10495 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be a <a href=\"#appendix-compressedtex-bc\">block-compressed image format</a>, an <a href=\"#appendix-compressedtex-etc2\">ETC compressed image format</a>, or an <a href=\"#appendix-compressedtex-astc\">ASTC compressed image format</a>" 10496 }, 10497 { 10498 "vuid": "VUID-VkImageCreateInfo-flags-01573", 10499 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>" 10500 } 10501 ], 10502 "(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [ 10503 { 10504 "vuid": "VUID-VkImageCreateInfo-pNext-01443", 10505 "text": " If the <code>pNext</code> chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[<a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>]" 10506 } 10507 ], 10508 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 10509 { 10510 "vuid": "VUID-VkImageCreateInfo-format-02561", 10511 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be 1" 10512 }, 10513 { 10514 "vuid": "VUID-VkImageCreateInfo-format-02562", 10515 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>" 10516 }, 10517 { 10518 "vuid": "VUID-VkImageCreateInfo-format-02563", 10519 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 10520 }, 10521 { 10522 "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260", 10523 "text": " If <code>format</code> is a <em>multi-planar</em> format, and if <code>imageCreateFormatFeatures</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) does not contain <code>VK_FORMAT_FEATURE_DISJOINT_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>" 10524 }, 10525 { 10526 "vuid": "VUID-VkImageCreateInfo-format-01577", 10527 "text": " If <code>format</code> is not a <em>multi-planar</em> format, and <code>flags</code> does not include <code>VK_IMAGE_CREATE_ALIAS_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>" 10528 } 10529 ], 10530 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_ycbcr_image_arrays)": [ 10531 { 10532 "vuid": "VUID-VkImageCreateInfo-format-02653", 10533 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, and the <code>ycbcrImageArrays</code> feature is not enabled, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1" 10534 } 10535 ], 10536 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_ycbcr_image_arrays)": [ 10537 { 10538 "vuid": "VUID-VkImageCreateInfo-format-02564", 10539 "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1" 10540 } 10541 ], 10542 "(VK_EXT_image_drm_format_modifier)": [ 10543 { 10544 "vuid": "VUID-VkImageCreateInfo-tiling-02261", 10545 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include exactly one of <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a> structures" 10546 }, 10547 { 10548 "vuid": "VUID-VkImageCreateInfo-pNext-02262", 10549 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a> structure, then <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>" 10550 }, 10551 { 10552 "vuid": "VUID-VkImageCreateInfo-tiling-02353", 10553 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure with non-zero <code>viewFormatCount</code>" 10554 } 10555 ], 10556 "(VK_EXT_sample_locations)": [ 10557 { 10558 "vuid": "VUID-VkImageCreateInfo-flags-01533", 10559 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> <code>format</code> <strong class=\"purple\">must</strong> be a depth or depth/stencil format" 10560 } 10561 ], 10562 "(VK_EXT_separate_stencil_usage)": [ 10563 { 10564 "vuid": "VUID-VkImageCreateInfo-format-02795", 10565 "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> includes <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 10566 }, 10567 { 10568 "vuid": "VUID-VkImageCreateInfo-format-02796", 10569 "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> does not include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also not include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 10570 }, 10571 { 10572 "vuid": "VUID-VkImageCreateInfo-format-02797", 10573 "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>" 10574 }, 10575 { 10576 "vuid": "VUID-VkImageCreateInfo-format-02798", 10577 "text": " If <code>format</code> is a depth-stencil format, <code>usage</code> does not include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure, then its <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> member <strong class=\"purple\">must</strong> also not include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>" 10578 }, 10579 { 10580 "vuid": "VUID-VkImageCreateInfo-Format-02536", 10581 "text": " If <code>Format</code> is a depth-stencil format and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>" 10582 }, 10583 { 10584 "vuid": "VUID-VkImageCreateInfo-format-02537", 10585 "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>" 10586 }, 10587 { 10588 "vuid": "VUID-VkImageCreateInfo-format-02538", 10589 "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, <code>format</code> is a depth-stencil format and the <code>pNext</code> chain includes a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure with its <code>stencilUsage</code> including <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>" 10590 } 10591 ], 10592 "(VK_NV_corner_sampled_image)": [ 10593 { 10594 "vuid": "VUID-VkImageCreateInfo-flags-02050", 10595 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code> or <code>VK_IMAGE_TYPE_3D</code>" 10596 }, 10597 { 10598 "vuid": "VUID-VkImageCreateInfo-flags-02051", 10599 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code>, it <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> and the <code>format</code> <strong class=\"purple\">must</strong> not be a depth/stencil format" 10600 }, 10601 { 10602 "vuid": "VUID-VkImageCreateInfo-flags-02052", 10603 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 10604 }, 10605 { 10606 "vuid": "VUID-VkImageCreateInfo-flags-02053", 10607 "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>extent.width</code>, <code>extent.height</code>, and <code>extent.depth</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 10608 } 10609 ], 10610 "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [ 10611 { 10612 "vuid": "VUID-VkImageCreateInfo-imageType-02082", 10613 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>" 10614 }, 10615 { 10616 "vuid": "VUID-VkImageCreateInfo-samples-02083", 10617 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>" 10618 } 10619 ], 10620 "(VK_NV_shading_rate_image)": [ 10621 { 10622 "vuid": "VUID-VkImageCreateInfo-tiling-02084", 10623 "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>" 10624 } 10625 ], 10626 "(VK_KHR_portability_subset)": [ 10627 { 10628 "vuid": "VUID-VkImageCreateInfo-imageView2DOn3DImage-04459", 10629 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageView2DOn3DImage</code> is <code>VK_FALSE</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>." 10630 }, 10631 { 10632 "vuid": "VUID-VkImageCreateInfo-multisampleArrayImage-04460", 10633 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>multisampleArrayImage</code> is <code>VK_FALSE</code>, and <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, then <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>." 10634 } 10635 ] 10636 }, 10637 "VkImageStencilUsageCreateInfo": { 10638 "(VK_EXT_separate_stencil_usage)": [ 10639 { 10640 "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-02539", 10641 "text": " If <code>stencilUsage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, it <strong class=\"purple\">must</strong> not include bits other than <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>" 10642 }, 10643 { 10644 "vuid": "VUID-VkImageStencilUsageCreateInfo-sType-sType", 10645 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO</code>" 10646 }, 10647 { 10648 "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-parameter", 10649 "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 10650 }, 10651 { 10652 "vuid": "VUID-VkImageStencilUsageCreateInfo-stencilUsage-requiredbitmask", 10653 "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 10654 } 10655 ] 10656 }, 10657 "VkDedicatedAllocationImageCreateInfoNV": { 10658 "(VK_NV_dedicated_allocation)": [ 10659 { 10660 "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994", 10661 "text": " If <code>dedicatedAllocation</code> is <code>VK_TRUE</code>, <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" 10662 }, 10663 { 10664 "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType", 10665 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>" 10666 } 10667 ] 10668 }, 10669 "VkExternalMemoryImageCreateInfo": { 10670 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 10671 { 10672 "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType", 10673 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>" 10674 }, 10675 { 10676 "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter", 10677 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values" 10678 }, 10679 { 10680 "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask", 10681 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 10682 } 10683 ] 10684 }, 10685 "VkExternalMemoryImageCreateInfoNV": { 10686 "(VK_NV_external_memory)": [ 10687 { 10688 "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType", 10689 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>" 10690 }, 10691 { 10692 "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter", 10693 "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 10694 } 10695 ] 10696 }, 10697 "VkExternalFormatANDROID": { 10698 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 10699 { 10700 "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894", 10701 "text": " <code>externalFormat</code> <strong class=\"purple\">must</strong> be <code>0</code> or a value returned in the <code>externalFormat</code> member of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a> by an earlier call to <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a>" 10702 }, 10703 { 10704 "vuid": "VUID-VkExternalFormatANDROID-sType-sType", 10705 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>" 10706 } 10707 ] 10708 }, 10709 "VkImageSwapchainCreateInfoKHR": { 10710 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [ 10711 { 10712 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995", 10713 "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the fields of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> <strong class=\"purple\">must</strong> match the <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain" 10714 }, 10715 { 10716 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType", 10717 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>" 10718 }, 10719 { 10720 "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter", 10721 "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 10722 } 10723 ] 10724 }, 10725 "VkImageFormatListCreateInfo": { 10726 "(VK_VERSION_1_2,VK_KHR_image_format_list)": [ 10727 { 10728 "vuid": "VUID-VkImageFormatListCreateInfo-sType-sType", 10729 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO</code>" 10730 }, 10731 { 10732 "vuid": "VUID-VkImageFormatListCreateInfo-pViewFormats-parameter", 10733 "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>pViewFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewFormatCount</code> valid <a href=\"#VkFormat\">VkFormat</a> values" 10734 } 10735 ] 10736 }, 10737 "VkImageDrmFormatModifierListCreateInfoEXT": { 10738 "(VK_EXT_image_drm_format_modifier)": [ 10739 { 10740 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263", 10741 "text": " Each <em>modifier</em> in <code>pDrmFormatModifiers</code> <strong class=\"purple\">must</strong> be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>" 10742 }, 10743 { 10744 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType", 10745 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT</code>" 10746 }, 10747 { 10748 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter", 10749 "text": " <code>pDrmFormatModifiers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierCount</code> <code>uint64_t</code> values" 10750 }, 10751 { 10752 "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength", 10753 "text": " <code>drmFormatModifierCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 10754 } 10755 ] 10756 }, 10757 "VkImageDrmFormatModifierExplicitCreateInfoEXT": { 10758 "(VK_EXT_image_drm_format_modifier)": [ 10759 { 10760 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264", 10761 "text": " <code>drmFormatModifier</code> <strong class=\"purple\">must</strong> be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>" 10762 }, 10763 { 10764 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265", 10765 "text": " <code>drmFormatModifierPlaneCount</code> <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>format</code> and <code>drmFormatModifier</code>, as found by querying <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>" 10766 }, 10767 { 10768 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267", 10769 "text": " For each element of <code>pPlaneLayouts</code>, <code>size</code> <strong class=\"purple\">must</strong> be 0" 10770 }, 10771 { 10772 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268", 10773 "text": " For each element of <code>pPlaneLayouts</code>, <code>arrayPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>arrayLayers</code> is 1" 10774 }, 10775 { 10776 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269", 10777 "text": " For each element of <code>pPlaneLayouts</code>, <code>depthPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent.depth</code> is 1" 10778 }, 10779 { 10780 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType", 10781 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT</code>" 10782 }, 10783 { 10784 "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter", 10785 "text": " If <code>drmFormatModifierPlaneCount</code> is not <code>0</code>, <code>pPlaneLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierPlaneCount</code> <a href=\"#VkSubresourceLayout\">VkSubresourceLayout</a> structures" 10786 } 10787 ] 10788 }, 10789 "vkGetImageSubresourceLayout": { 10790 "!(VK_EXT_image_drm_format_modifier)": [ 10791 { 10792 "vuid": "VUID-vkGetImageSubresourceLayout-image-00996", 10793 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>" 10794 } 10795 ], 10796 "(VK_EXT_image_drm_format_modifier)": [ 10797 { 10798 "vuid": "VUID-vkGetImageSubresourceLayout-image-02270", 10799 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>" 10800 }, 10801 { 10802 "vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271", 10803 "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> and the index <code>i</code> <strong class=\"purple\">must</strong> be less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image’s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>" 10804 } 10805 ], 10806 "core": [ 10807 { 10808 "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997", 10809 "text": " The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set" 10810 }, 10811 { 10812 "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716", 10813 "text": " The <code>mipLevel</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 10814 }, 10815 { 10816 "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717", 10817 "text": " The <code>arrayLayer</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 10818 }, 10819 { 10820 "vuid": "VUID-vkGetImageSubresourceLayout-format-04461", 10821 "text": " If <code>format</code> is a color format, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 10822 }, 10823 { 10824 "vuid": "VUID-vkGetImageSubresourceLayout-format-04462", 10825 "text": " If <code>format</code> has a depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>" 10826 }, 10827 { 10828 "vuid": "VUID-vkGetImageSubresourceLayout-format-04463", 10829 "text": " If <code>format</code> has a stencil component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> contain <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 10830 }, 10831 { 10832 "vuid": "VUID-vkGetImageSubresourceLayout-format-04464", 10833 "text": " If <code>format</code> does not contain a stencil or depth component, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 10834 }, 10835 { 10836 "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter", 10837 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 10838 }, 10839 { 10840 "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter", 10841 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 10842 }, 10843 { 10844 "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter", 10845 "text": " <code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure" 10846 }, 10847 { 10848 "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter", 10849 "text": " <code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSubresourceLayout\">VkSubresourceLayout</a> structure" 10850 }, 10851 { 10852 "vuid": "VUID-vkGetImageSubresourceLayout-image-parent", 10853 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10854 } 10855 ], 10856 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 10857 { 10858 "vuid": "VUID-vkGetImageSubresourceLayout-format-01581", 10859 "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and its <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a> with two planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" 10860 }, 10861 { 10862 "vuid": "VUID-vkGetImageSubresourceLayout-format-01582", 10863 "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and its <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a> with three planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 10864 } 10865 ], 10866 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 10867 { 10868 "vuid": "VUID-vkGetImageSubresourceLayout-image-01895", 10869 "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory" 10870 } 10871 ] 10872 }, 10873 "VkImageSubresource": { 10874 "core": [ 10875 { 10876 "vuid": "VUID-VkImageSubresource-aspectMask-parameter", 10877 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 10878 }, 10879 { 10880 "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask", 10881 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 10882 } 10883 ] 10884 }, 10885 "vkGetImageDrmFormatModifierPropertiesEXT": { 10886 "(VK_EXT_image_drm_format_modifier)": [ 10887 { 10888 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272", 10889 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageCreateInfo\"><code>tiling</code></a> equal to <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>" 10890 }, 10891 { 10892 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter", 10893 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 10894 }, 10895 { 10896 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter", 10897 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 10898 }, 10899 { 10900 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter", 10901 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a> structure" 10902 }, 10903 { 10904 "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent", 10905 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10906 } 10907 ] 10908 }, 10909 "VkImageDrmFormatModifierPropertiesEXT": { 10910 "(VK_EXT_image_drm_format_modifier)": [ 10911 { 10912 "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType", 10913 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT</code>" 10914 }, 10915 { 10916 "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext", 10917 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10918 } 10919 ] 10920 }, 10921 "vkDestroyImage": { 10922 "core": [ 10923 { 10924 "vuid": "VUID-vkDestroyImage-image-01000", 10925 "text": " All submitted commands that refer to <code>image</code>, either directly or via a <code>VkImageView</code>, <strong class=\"purple\">must</strong> have completed execution" 10926 }, 10927 { 10928 "vuid": "VUID-vkDestroyImage-image-01001", 10929 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 10930 }, 10931 { 10932 "vuid": "VUID-vkDestroyImage-image-01002", 10933 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 10934 }, 10935 { 10936 "vuid": "VUID-vkDestroyImage-device-parameter", 10937 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 10938 }, 10939 { 10940 "vuid": "VUID-vkDestroyImage-image-parameter", 10941 "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 10942 }, 10943 { 10944 "vuid": "VUID-vkDestroyImage-pAllocator-parameter", 10945 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 10946 }, 10947 { 10948 "vuid": "VUID-vkDestroyImage-image-parent", 10949 "text": " If <code>image</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 10950 } 10951 ] 10952 }, 10953 "vkCreateImageView": { 10954 "core": [ 10955 { 10956 "vuid": "VUID-vkCreateImageView-device-parameter", 10957 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 10958 }, 10959 { 10960 "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter", 10961 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewCreateInfo\">VkImageViewCreateInfo</a> structure" 10962 }, 10963 { 10964 "vuid": "VUID-vkCreateImageView-pAllocator-parameter", 10965 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 10966 }, 10967 { 10968 "vuid": "VUID-vkCreateImageView-pView-parameter", 10969 "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageView\">VkImageView</a> handle" 10970 } 10971 ] 10972 }, 10973 "VkImageViewCreateInfo": { 10974 "core": [ 10975 { 10976 "vuid": "VUID-VkImageViewCreateInfo-image-01003", 10977 "text": " If <code>image</code> was not created with <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 10978 }, 10979 { 10980 "vuid": "VUID-VkImageViewCreateInfo-viewType-01004", 10981 "text": " If the <a href=\"#features-imageCubeArray\">image cubemap arrays</a> feature is not enabled, <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 10982 }, 10983 { 10984 "vuid": "VUID-VkImageViewCreateInfo-image-04441", 10985 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of the usages defined in the <a href=\"#valid-imageview-imageusage\">valid image usage</a> list for image views" 10986 }, 10987 { 10988 "vuid": "VUID-VkImageViewCreateInfo-None-02273", 10989 "text": " The <a href=\"#resources-image-view-format-features\">format features</a> of the resultant image view <strong class=\"purple\">must</strong> contain at least one bit" 10990 }, 10991 { 10992 "vuid": "VUID-VkImageViewCreateInfo-usage-02274", 10993 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, then the <a href=\"#resources-image-view-format-features\">format features</a> of the resultant image view <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT</code>" 10994 }, 10995 { 10996 "vuid": "VUID-VkImageViewCreateInfo-usage-02275", 10997 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT</code>" 10998 }, 10999 { 11000 "vuid": "VUID-VkImageViewCreateInfo-usage-02276", 11001 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 11002 }, 11003 { 11004 "vuid": "VUID-VkImageViewCreateInfo-usage-02277", 11005 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 11006 }, 11007 { 11008 "vuid": "VUID-VkImageViewCreateInfo-usage-02652", 11009 "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>" 11010 }, 11011 { 11012 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478", 11013 "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 11014 }, 11015 { 11016 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718", 11017 "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> + <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 11018 }, 11019 { 11020 "vuid": "VUID-VkImageViewCreateInfo-image-01020", 11021 "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 11022 }, 11023 { 11024 "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021", 11025 "text": " <code>subresourceRange</code> and <code>viewType</code> <strong class=\"purple\">must</strong> be compatible with the image, as described in the <a href=\"#resources-image-views-compatibility\">compatibility table</a>" 11026 }, 11027 { 11028 "vuid": "VUID-VkImageViewCreateInfo-viewType-02960", 11029 "text": " If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE</code> and <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be <code>6</code>" 11030 }, 11031 { 11032 "vuid": "VUID-VkImageViewCreateInfo-viewType-02961", 11033 "text": " If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code> and <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>6</code>" 11034 }, 11035 { 11036 "vuid": "VUID-VkImageViewCreateInfo-viewType-02962", 11037 "text": " If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE</code> and <code>subresourceRange.layerCount</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the remaining number of layers <strong class=\"purple\">must</strong> be <code>6</code>" 11038 }, 11039 { 11040 "vuid": "VUID-VkImageViewCreateInfo-viewType-02963", 11041 "text": " If <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code> and <code>subresourceRange.layerCount</code> is <code>VK_REMAINING_ARRAY_LAYERS</code>, the remaining number of layers <strong class=\"purple\">must</strong> be a multiple of <code>6</code>" 11042 }, 11043 { 11044 "vuid": "VUID-VkImageViewCreateInfo-sType-sType", 11045 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>" 11046 }, 11047 { 11048 "vuid": "VUID-VkImageViewCreateInfo-pNext-pNext", 11049 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageViewASTCDecodeModeEXT\">VkImageViewASTCDecodeModeEXT</a>, <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>" 11050 }, 11051 { 11052 "vuid": "VUID-VkImageViewCreateInfo-sType-unique", 11053 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 11054 }, 11055 { 11056 "vuid": "VUID-VkImageViewCreateInfo-flags-parameter", 11057 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageViewCreateFlagBits\">VkImageViewCreateFlagBits</a> values" 11058 }, 11059 { 11060 "vuid": "VUID-VkImageViewCreateInfo-image-parameter", 11061 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 11062 }, 11063 { 11064 "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter", 11065 "text": " <code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value" 11066 }, 11067 { 11068 "vuid": "VUID-VkImageViewCreateInfo-format-parameter", 11069 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 11070 }, 11071 { 11072 "vuid": "VUID-VkImageViewCreateInfo-components-parameter", 11073 "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure" 11074 }, 11075 { 11076 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter", 11077 "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structure" 11078 } 11079 ], 11080 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 11081 { 11082 "vuid": "VUID-VkImageViewCreateInfo-image-01005", 11083 "text": " If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> but without <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>" 11084 }, 11085 { 11086 "vuid": "VUID-VkImageViewCreateInfo-image-01482", 11087 "text": " If <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 11088 }, 11089 { 11090 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483", 11091 "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 11092 }, 11093 { 11094 "vuid": "VUID-VkImageViewCreateInfo-image-02724", 11095 "text": " If <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the depth computed from <code>baseMipLevel</code> and <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created, according to the formula defined in <a href=\"#resources-image-miplevel-sizing\">Image Miplevel Sizing</a>" 11096 }, 11097 { 11098 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-02725", 11099 "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the depth computed from <code>baseMipLevel</code> and <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created, according to the formula defined in <a href=\"#resources-image-miplevel-sizing\">Image Miplevel Sizing</a>" 11100 } 11101 ], 11102 "(VK_EXT_fragment_density_map)": [ 11103 { 11104 "vuid": "VUID-VkImageViewCreateInfo-image-02571", 11105 "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 11106 }, 11107 { 11108 "vuid": "VUID-VkImageViewCreateInfo-flags-02572", 11109 "text": " If <a href=\"#features-fragmentDensityMapDynamic\">dynamic fragment density map</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code>" 11110 }, 11111 { 11112 "vuid": "VUID-VkImageViewCreateInfo-flags-04116", 11113 "text": " If <code>flags</code> does not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code> and <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, its <code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>" 11114 } 11115 ], 11116 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 11117 { 11118 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480", 11119 "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 11120 }, 11121 { 11122 "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719", 11123 "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> + <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 11124 } 11125 ], 11126 "!(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11127 { 11128 "vuid": "VUID-VkImageViewCreateInfo-image-01018", 11129 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>" 11130 } 11131 ], 11132 "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11133 { 11134 "vuid": "VUID-VkImageViewCreateInfo-image-01759", 11135 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>" 11136 } 11137 ], 11138 "!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11139 { 11140 "vuid": "VUID-VkImageViewCreateInfo-image-01760", 11141 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>" 11142 } 11143 ], 11144 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11145 { 11146 "vuid": "VUID-VkImageViewCreateInfo-image-01761", 11147 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>" 11148 } 11149 ], 11150 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 11151 { 11152 "vuid": "VUID-VkImageViewCreateInfo-image-01583", 11153 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with, or <strong class=\"purple\">must</strong> be an uncompressed format that is size-compatible with, the <code>format</code> used to create <code>image</code>" 11154 }, 11155 { 11156 "vuid": "VUID-VkImageViewCreateInfo-image-01584", 11157 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, the <code>levelCount</code> and <code>layerCount</code> members of <code>subresourceRange</code> <strong class=\"purple\">must</strong> both be <code>1</code>" 11158 } 11159 ], 11160 "(VK_VERSION_1_2,VK_KHR_image_format_list)": [ 11161 { 11162 "vuid": "VUID-VkImageViewCreateInfo-pNext-01585", 11163 "text": " If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used when creating <code>image</code> and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero then <code>format</code> <strong class=\"purple\">must</strong> be one of the formats in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code>" 11164 }, 11165 { 11166 "vuid": "VUID-VkImageViewCreateInfo-pNext-04082", 11167 "text": " If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used when creating <code>image</code> and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero then all of the formats in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> as described in the <a href=\"#formats-compatibility\">compatibility table</a>" 11168 }, 11169 { 11170 "vuid": "VUID-VkImageViewCreateInfo-flags-04083", 11171 "text": " If <code>flags</code> does not contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> and the <code>pNext</code> chain include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure then <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 11172 } 11173 ], 11174 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11175 { 11176 "vuid": "VUID-VkImageViewCreateInfo-image-01586", 11177 "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, and if <code>subresourceRange.aspectMask</code> is one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <a href=\"#VkFormat\">VkFormat</a> for the plane of the <code>image</code> <code>format</code> indicated by <code>subresourceRange.aspectMask</code>, as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" 11178 }, 11179 { 11180 "vuid": "VUID-VkImageViewCreateInfo-image-01762", 11181 "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, or if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format and if <code>subresourceRange.aspectMask</code> is <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>" 11182 }, 11183 { 11184 "vuid": "VUID-VkImageViewCreateInfo-pNext-01970", 11185 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a <code>conversion</code> value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> have the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>" 11186 } 11187 ], 11188 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11189 { 11190 "vuid": "VUID-VkImageViewCreateInfo-image-01019", 11191 "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>" 11192 } 11193 ], 11194 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 11195 { 11196 "vuid": "VUID-VkImageViewCreateInfo-image-02399", 11197 "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>" 11198 }, 11199 { 11200 "vuid": "VUID-VkImageViewCreateInfo-image-02400", 11201 "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> structure with a <code>conversion</code> object created with the same external format as <code>image</code>" 11202 }, 11203 { 11204 "vuid": "VUID-VkImageViewCreateInfo-image-02401", 11205 "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>" 11206 } 11207 ], 11208 "(VK_KHR_fragment_shading_rate,VK_NV_shading_rate_image)": [ 11209 { 11210 "vuid": "VUID-VkImageViewCreateInfo-image-02086", 11211 "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>" 11212 } 11213 ], 11214 "(VK_NV_shading_rate_image)": [ 11215 { 11216 "vuid": "VUID-VkImageViewCreateInfo-image-02087", 11217 "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_R8_UINT</code>" 11218 } 11219 ], 11220 "(VK_KHR_fragment_shading_rate)": [ 11221 { 11222 "vuid": "VUID-VkImageViewCreateInfo-usage-04550", 11223 "text": " If the <code>usage</code> for the image view includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code>" 11224 }, 11225 { 11226 "vuid": "VUID-VkImageViewCreateInfo-usage-04551", 11227 "text": " If the <code>usage</code> for the image view includes <code>VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR</code> and <a href=\"#limits-layeredShadingRateAttachments\"><code>layeredShadingRateAttachments</code></a> is <code>VK_FALSE</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 11228 } 11229 ], 11230 "(VK_EXT_fragment_density_map)+(VK_EXT_fragment_density_map2)": [ 11231 { 11232 "vuid": "VUID-VkImageViewCreateInfo-flags-03567", 11233 "text": " If <a href=\"#features-fragmentDensityMapDeferred\">deferred fragment density map</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT</code>" 11234 }, 11235 { 11236 "vuid": "VUID-VkImageViewCreateInfo-flags-03568", 11237 "text": " If <code>flags</code> contains <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code>" 11238 }, 11239 { 11240 "vuid": "VUID-VkImageViewCreateInfo-image-03569", 11241 "text": " If <code>image</code> was created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> and <code>usage</code> containing <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>subresourceRange.layerCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxSubsampledArrayLayers\"><code>VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</code>::<code>maxSubsampledArrayLayers</code></a>" 11242 } 11243 ], 11244 "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_EXT_separate_stencil_usage)": [ 11245 { 11246 "vuid": "VUID-VkImageViewCreateInfo-pNext-02661", 11247 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, its <code>usage</code> member <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>" 11248 } 11249 ], 11250 "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_separate_stencil_usage)": [ 11251 { 11252 "vuid": "VUID-VkImageViewCreateInfo-pNext-02662", 11253 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, and <code>image</code> was not created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, its <code>usage</code> member <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>" 11254 }, 11255 { 11256 "vuid": "VUID-VkImageViewCreateInfo-pNext-02663", 11257 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, <code>image</code> was created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, and <code>subResourceRange.aspectMask</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, the <code>usage</code> member of the <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> instance <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure used to create <code>image</code>" 11258 }, 11259 { 11260 "vuid": "VUID-VkImageViewCreateInfo-pNext-02664", 11261 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure, <code>image</code> was created with a <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a> structure included in the <code>pNext</code> chain of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, and <code>subResourceRange.aspectMask</code> includes bits other than <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, the <code>usage</code> member of the <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a> structure <strong class=\"purple\">must</strong> not include any bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create <code>image</code>" 11262 } 11263 ], 11264 "(VK_KHR_portability_subset)": [ 11265 { 11266 "vuid": "VUID-VkImageViewCreateInfo-imageViewFormatSwizzle-04465", 11267 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageViewFormatSwizzle</code> is <code>VK_FALSE</code>, all elements of <code>components</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>." 11268 }, 11269 { 11270 "vuid": "VUID-VkImageViewCreateInfo-imageViewFormatReinterpretation-04466", 11271 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>imageViewFormatReinterpretation</code> is <code>VK_FALSE</code>, the <a href=\"#VkFormat\">VkFormat</a> in <code>format</code> <strong class=\"purple\">must</strong> not contain a different number of components, or a different number of bits in each component, than the format of the <code>VkImage</code> in <code>image</code>." 11272 } 11273 ] 11274 }, 11275 "VkImageViewUsageCreateInfo": { 11276 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 11277 { 11278 "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType", 11279 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>" 11280 }, 11281 { 11282 "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter", 11283 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 11284 }, 11285 { 11286 "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask", 11287 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 11288 } 11289 ] 11290 }, 11291 "VkImageSubresourceRange": { 11292 "core": [ 11293 { 11294 "vuid": "VUID-VkImageSubresourceRange-levelCount-01720", 11295 "text": " If <code>levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11296 }, 11297 { 11298 "vuid": "VUID-VkImageSubresourceRange-layerCount-01721", 11299 "text": " If <code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11300 }, 11301 { 11302 "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter", 11303 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 11304 }, 11305 { 11306 "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask", 11307 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 11308 } 11309 ], 11310 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11311 { 11312 "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670", 11313 "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then it <strong class=\"purple\">must</strong> not include any of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 11314 } 11315 ], 11316 "(VK_EXT_image_drm_format_modifier)": [ 11317 { 11318 "vuid": "VUID-VkImageSubresourceRange-aspectMask-02278", 11319 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>" 11320 } 11321 ] 11322 }, 11323 "VkComponentMapping": { 11324 "core": [ 11325 { 11326 "vuid": "VUID-VkComponentMapping-r-parameter", 11327 "text": " <code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value" 11328 }, 11329 { 11330 "vuid": "VUID-VkComponentMapping-g-parameter", 11331 "text": " <code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value" 11332 }, 11333 { 11334 "vuid": "VUID-VkComponentMapping-b-parameter", 11335 "text": " <code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value" 11336 }, 11337 { 11338 "vuid": "VUID-VkComponentMapping-a-parameter", 11339 "text": " <code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value" 11340 } 11341 ] 11342 }, 11343 "VkImageViewASTCDecodeModeEXT": { 11344 "(VK_EXT_astc_decode_mode)": [ 11345 { 11346 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230", 11347 "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R16G16B16A16_SFLOAT</code>, <code>VK_FORMAT_R8G8B8A8_UNORM</code>, or <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>" 11348 }, 11349 { 11350 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231", 11351 "text": " If the <a href=\"#features-astc-decodeModeSharedExponent\"><code>decodeModeSharedExponent</code></a> feature is not enabled, <code>decodeMode</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>" 11352 }, 11353 { 11354 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232", 11355 "text": " If <code>decodeMode</code> is <code>VK_FORMAT_R8G8B8A8_UNORM</code> the image view <strong class=\"purple\">must</strong> not include blocks using any of the ASTC HDR modes" 11356 }, 11357 { 11358 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-04084", 11359 "text": " <code>format</code> of the image view <strong class=\"purple\">must</strong> be one of the <a href=\"#appendix-compressedtex-astc\">ASTC Compressed Image Formats</a>" 11360 }, 11361 { 11362 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType", 11363 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT</code>" 11364 }, 11365 { 11366 "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter", 11367 "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 11368 } 11369 ] 11370 }, 11371 "vkDestroyImageView": { 11372 "core": [ 11373 { 11374 "vuid": "VUID-vkDestroyImageView-imageView-01026", 11375 "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution" 11376 }, 11377 { 11378 "vuid": "VUID-vkDestroyImageView-imageView-01027", 11379 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 11380 }, 11381 { 11382 "vuid": "VUID-vkDestroyImageView-imageView-01028", 11383 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11384 }, 11385 { 11386 "vuid": "VUID-vkDestroyImageView-device-parameter", 11387 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11388 }, 11389 { 11390 "vuid": "VUID-vkDestroyImageView-imageView-parameter", 11391 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle" 11392 }, 11393 { 11394 "vuid": "VUID-vkDestroyImageView-pAllocator-parameter", 11395 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 11396 }, 11397 { 11398 "vuid": "VUID-vkDestroyImageView-imageView-parent", 11399 "text": " If <code>imageView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11400 } 11401 ] 11402 }, 11403 "vkGetImageViewHandleNVX": { 11404 "(VK_NVX_image_view_handle)": [ 11405 { 11406 "vuid": "VUID-vkGetImageViewHandleNVX-device-parameter", 11407 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11408 }, 11409 { 11410 "vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter", 11411 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageViewHandleInfoNVX\">VkImageViewHandleInfoNVX</a> structure" 11412 } 11413 ] 11414 }, 11415 "VkImageViewHandleInfoNVX": { 11416 "(VK_NVX_image_view_handle)": [ 11417 { 11418 "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654", 11419 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>" 11420 }, 11421 { 11422 "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655", 11423 "text": " <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> if <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>" 11424 }, 11425 { 11426 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656", 11427 "text": " If descriptorType is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the image that <code>imageView</code> was created from <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> usage bit set" 11428 }, 11429 { 11430 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657", 11431 "text": " If descriptorType is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the image that <code>imageView</code> was created from <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_USAGE_STORAGE_BIT</code> usage bit set" 11432 }, 11433 { 11434 "vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType", 11435 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX</code>" 11436 }, 11437 { 11438 "vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext", 11439 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11440 }, 11441 { 11442 "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter", 11443 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle" 11444 }, 11445 { 11446 "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter", 11447 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 11448 }, 11449 { 11450 "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter", 11451 "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> handle" 11452 }, 11453 { 11454 "vuid": "VUID-VkImageViewHandleInfoNVX-commonparent", 11455 "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 11456 } 11457 ] 11458 }, 11459 "vkGetImageViewAddressNVX": { 11460 "(VK_NVX_image_view_handle)": [ 11461 { 11462 "vuid": "VUID-vkGetImageViewAddressNVX-device-parameter", 11463 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11464 }, 11465 { 11466 "vuid": "VUID-vkGetImageViewAddressNVX-imageView-parameter", 11467 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle" 11468 }, 11469 { 11470 "vuid": "VUID-vkGetImageViewAddressNVX-pProperties-parameter", 11471 "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageViewAddressPropertiesNVX\">VkImageViewAddressPropertiesNVX</a> structure" 11472 }, 11473 { 11474 "vuid": "VUID-vkGetImageViewAddressNVX-imageView-parent", 11475 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11476 } 11477 ] 11478 }, 11479 "VkImageViewAddressPropertiesNVX": { 11480 "(VK_NVX_image_view_handle)": [ 11481 { 11482 "vuid": "VUID-VkImageViewAddressPropertiesNVX-sType-sType", 11483 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX</code>" 11484 }, 11485 { 11486 "vuid": "VUID-VkImageViewAddressPropertiesNVX-pNext-pNext", 11487 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11488 } 11489 ] 11490 }, 11491 "vkGetBufferMemoryRequirements": { 11492 "core": [ 11493 { 11494 "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter", 11495 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11496 }, 11497 { 11498 "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter", 11499 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 11500 }, 11501 { 11502 "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter", 11503 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure" 11504 }, 11505 { 11506 "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent", 11507 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11508 } 11509 ] 11510 }, 11511 "vkGetImageMemoryRequirements": { 11512 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11513 { 11514 "vuid": "VUID-vkGetImageMemoryRequirements-image-01588", 11515 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set" 11516 } 11517 ], 11518 "(VK_ANDROID_external_memory_android_hardware_buffer)": [ 11519 { 11520 "vuid": "VUID-vkGetImageMemoryRequirements-image-04004", 11521 "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory" 11522 } 11523 ], 11524 "core": [ 11525 { 11526 "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter", 11527 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11528 }, 11529 { 11530 "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter", 11531 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 11532 }, 11533 { 11534 "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter", 11535 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure" 11536 }, 11537 { 11538 "vuid": "VUID-vkGetImageMemoryRequirements-image-parent", 11539 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11540 } 11541 ] 11542 }, 11543 "vkGetBufferMemoryRequirements2": { 11544 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 11545 { 11546 "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter", 11547 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11548 }, 11549 { 11550 "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter", 11551 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferMemoryRequirementsInfo2\">VkBufferMemoryRequirementsInfo2</a> structure" 11552 }, 11553 { 11554 "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter", 11555 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure" 11556 } 11557 ] 11558 }, 11559 "VkBufferMemoryRequirementsInfo2": { 11560 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 11561 { 11562 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType", 11563 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>" 11564 }, 11565 { 11566 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext", 11567 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 11568 }, 11569 { 11570 "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter", 11571 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 11572 } 11573 ] 11574 }, 11575 "vkGetImageMemoryRequirements2": { 11576 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 11577 { 11578 "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter", 11579 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11580 }, 11581 { 11582 "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter", 11583 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 11584 }, 11585 { 11586 "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter", 11587 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure" 11588 } 11589 ] 11590 }, 11591 "VkImageMemoryRequirementsInfo2": { 11592 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11593 { 11594 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589", 11595 "text": " If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 11596 }, 11597 { 11598 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590", 11599 "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 11600 } 11601 ], 11602 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [ 11603 { 11604 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279", 11605 "text": " If <code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> and with <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 11606 }, 11607 { 11608 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280", 11609 "text": " If <code>image</code> was created with a single-plane format and with any <code>tiling</code> other than <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 11610 } 11611 ], 11612 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [ 11613 { 11614 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591", 11615 "text": " If <code>image</code> was created with a single-plane format, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> included in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure" 11616 } 11617 ], 11618 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 11619 { 11620 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897", 11621 "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory" 11622 } 11623 ], 11624 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 11625 { 11626 "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType", 11627 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>" 11628 }, 11629 { 11630 "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext", 11631 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>" 11632 }, 11633 { 11634 "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-unique", 11635 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 11636 }, 11637 { 11638 "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter", 11639 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 11640 } 11641 ] 11642 }, 11643 "VkImagePlaneMemoryRequirementsInfo": { 11644 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 11645 { 11646 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281", 11647 "text": " If the image’s <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image (that is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)" 11648 }, 11649 { 11650 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType", 11651 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>" 11652 }, 11653 { 11654 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter", 11655 "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value" 11656 } 11657 ], 11658 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [ 11659 { 11660 "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282", 11661 "text": " If the image’s <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image (that is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image’s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)" 11662 } 11663 ] 11664 }, 11665 "VkMemoryRequirements2": { 11666 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 11667 { 11668 "vuid": "VUID-VkMemoryRequirements2-sType-sType", 11669 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>" 11670 }, 11671 { 11672 "vuid": "VUID-VkMemoryRequirements2-pNext-pNext", 11673 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>" 11674 }, 11675 { 11676 "vuid": "VUID-VkMemoryRequirements2-sType-unique", 11677 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 11678 } 11679 ] 11680 }, 11681 "VkMemoryDedicatedRequirements": { 11682 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 11683 { 11684 "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType", 11685 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>" 11686 } 11687 ] 11688 }, 11689 "vkBindBufferMemory": { 11690 "core": [ 11691 { 11692 "vuid": "VUID-vkBindBufferMemory-buffer-01029", 11693 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 11694 }, 11695 { 11696 "vuid": "VUID-vkBindBufferMemory-buffer-01030", 11697 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags" 11698 }, 11699 { 11700 "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031", 11701 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 11702 }, 11703 { 11704 "vuid": "VUID-vkBindBufferMemory-memory-01035", 11705 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>" 11706 }, 11707 { 11708 "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036", 11709 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>" 11710 }, 11711 { 11712 "vuid": "VUID-vkBindBufferMemory-size-01037", 11713 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 11714 }, 11715 { 11716 "vuid": "VUID-vkBindBufferMemory-device-parameter", 11717 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11718 }, 11719 { 11720 "vuid": "VUID-vkBindBufferMemory-buffer-parameter", 11721 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 11722 }, 11723 { 11724 "vuid": "VUID-vkBindBufferMemory-memory-parameter", 11725 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 11726 }, 11727 { 11728 "vuid": "VUID-vkBindBufferMemory-buffer-parent", 11729 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11730 }, 11731 { 11732 "vuid": "VUID-vkBindBufferMemory-memory-parent", 11733 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11734 } 11735 ], 11736 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 11737 { 11738 "vuid": "VUID-vkBindBufferMemory-buffer-01444", 11739 "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>" 11740 }, 11741 { 11742 "vuid": "VUID-vkBindBufferMemory-memory-01508", 11743 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 11744 } 11745 ], 11746 "(VK_VERSION_1_1)": [ 11747 { 11748 "vuid": "VUID-vkBindBufferMemory-None-01898", 11749 "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 11750 }, 11751 { 11752 "vuid": "VUID-vkBindBufferMemory-None-01899", 11753 "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 11754 } 11755 ], 11756 "(VK_NV_dedicated_allocation)": [ 11757 { 11758 "vuid": "VUID-vkBindBufferMemory-buffer-01038", 11759 "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 11760 } 11761 ], 11762 "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 11763 { 11764 "vuid": "VUID-vkBindBufferMemory-buffer-01039", 11765 "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" 11766 } 11767 ], 11768 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 11769 { 11770 "vuid": "VUID-vkBindBufferMemory-memory-02726", 11771 "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" 11772 } 11773 ], 11774 "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 11775 { 11776 "vuid": "VUID-vkBindBufferMemory-memory-02727", 11777 "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" 11778 } 11779 ], 11780 "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 11781 { 11782 "vuid": "VUID-vkBindBufferMemory-memory-02985", 11783 "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" 11784 }, 11785 { 11786 "vuid": "VUID-vkBindBufferMemory-memory-02986", 11787 "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" 11788 } 11789 ], 11790 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 11791 { 11792 "vuid": "VUID-vkBindBufferMemory-bufferDeviceAddress-03339", 11793 "text": " If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set" 11794 } 11795 ] 11796 }, 11797 "vkBindBufferMemory2": { 11798 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [ 11799 { 11800 "vuid": "VUID-vkBindBufferMemory2-device-parameter", 11801 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11802 }, 11803 { 11804 "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter", 11805 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindBufferMemoryInfo\">VkBindBufferMemoryInfo</a> structures" 11806 }, 11807 { 11808 "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength", 11809 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 11810 } 11811 ] 11812 }, 11813 "VkBindBufferMemoryInfo": { 11814 "core": [ 11815 { 11816 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01029", 11817 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 11818 }, 11819 { 11820 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01030", 11821 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags" 11822 }, 11823 { 11824 "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01031", 11825 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 11826 }, 11827 { 11828 "vuid": "VUID-VkBindBufferMemoryInfo-memory-01035", 11829 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>" 11830 }, 11831 { 11832 "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01036", 11833 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>" 11834 }, 11835 { 11836 "vuid": "VUID-VkBindBufferMemoryInfo-size-01037", 11837 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 11838 } 11839 ], 11840 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 11841 { 11842 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01444", 11843 "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>" 11844 }, 11845 { 11846 "vuid": "VUID-VkBindBufferMemoryInfo-memory-01508", 11847 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 11848 } 11849 ], 11850 "(VK_VERSION_1_1)": [ 11851 { 11852 "vuid": "VUID-VkBindBufferMemoryInfo-None-01898", 11853 "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 11854 }, 11855 { 11856 "vuid": "VUID-VkBindBufferMemoryInfo-None-01899", 11857 "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 11858 } 11859 ], 11860 "(VK_NV_dedicated_allocation)": [ 11861 { 11862 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01038", 11863 "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 11864 } 11865 ], 11866 "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 11867 { 11868 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01039", 11869 "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" 11870 } 11871 ], 11872 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 11873 { 11874 "vuid": "VUID-VkBindBufferMemoryInfo-memory-02726", 11875 "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" 11876 } 11877 ], 11878 "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 11879 { 11880 "vuid": "VUID-VkBindBufferMemoryInfo-memory-02727", 11881 "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" 11882 } 11883 ], 11884 "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 11885 { 11886 "vuid": "VUID-VkBindBufferMemoryInfo-memory-02985", 11887 "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" 11888 }, 11889 { 11890 "vuid": "VUID-VkBindBufferMemoryInfo-memory-02986", 11891 "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> when <code>buffer</code> was created" 11892 } 11893 ], 11894 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 11895 { 11896 "vuid": "VUID-VkBindBufferMemoryInfo-bufferDeviceAddress-03339", 11897 "text": " If the <a href=\"#VkPhysicalDeviceBufferDeviceAddressFeatures\">VkPhysicalDeviceBufferDeviceAddressFeatures</a>::<code>bufferDeviceAddress</code> feature is enabled and <code>buffer</code> was created with the <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code> bit set, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated with the <code>VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT</code> bit set" 11898 } 11899 ], 11900 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 11901 { 11902 "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605", 11903 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated" 11904 } 11905 ], 11906 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [ 11907 { 11908 "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType", 11909 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>" 11910 }, 11911 { 11912 "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext", 11913 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>" 11914 }, 11915 { 11916 "vuid": "VUID-VkBindBufferMemoryInfo-sType-unique", 11917 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 11918 }, 11919 { 11920 "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter", 11921 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 11922 }, 11923 { 11924 "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter", 11925 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 11926 }, 11927 { 11928 "vuid": "VUID-VkBindBufferMemoryInfo-commonparent", 11929 "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 11930 } 11931 ] 11932 }, 11933 "VkBindBufferMemoryDeviceGroupInfo": { 11934 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 11935 { 11936 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606", 11937 "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device" 11938 }, 11939 { 11940 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607", 11941 "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices" 11942 }, 11943 { 11944 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType", 11945 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>" 11946 }, 11947 { 11948 "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter", 11949 "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values" 11950 } 11951 ] 11952 }, 11953 "vkBindImageMemory": { 11954 "core": [ 11955 { 11956 "vuid": "VUID-vkBindImageMemory-image-01044", 11957 "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 11958 }, 11959 { 11960 "vuid": "VUID-vkBindImageMemory-image-01045", 11961 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags" 11962 }, 11963 { 11964 "vuid": "VUID-vkBindImageMemory-memoryOffset-01046", 11965 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 11966 }, 11967 { 11968 "vuid": "VUID-vkBindImageMemory-memory-01047", 11969 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>" 11970 }, 11971 { 11972 "vuid": "VUID-vkBindImageMemory-memoryOffset-01048", 11973 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>" 11974 }, 11975 { 11976 "vuid": "VUID-vkBindImageMemory-size-01049", 11977 "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>" 11978 }, 11979 { 11980 "vuid": "VUID-vkBindImageMemory-device-parameter", 11981 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 11982 }, 11983 { 11984 "vuid": "VUID-vkBindImageMemory-image-parameter", 11985 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 11986 }, 11987 { 11988 "vuid": "VUID-vkBindImageMemory-memory-parameter", 11989 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 11990 }, 11991 { 11992 "vuid": "VUID-vkBindImageMemory-image-parent", 11993 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11994 }, 11995 { 11996 "vuid": "VUID-vkBindImageMemory-memory-parent", 11997 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 11998 } 11999 ], 12000 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 12001 { 12002 "vuid": "VUID-vkBindImageMemory-image-01445", 12003 "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>" 12004 } 12005 ], 12006 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [ 12007 { 12008 "vuid": "VUID-vkBindImageMemory-memory-01509", 12009 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 12010 } 12011 ], 12012 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [ 12013 { 12014 "vuid": "VUID-vkBindImageMemory-memory-02628", 12015 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 12016 }, 12017 { 12018 "vuid": "VUID-vkBindImageMemory-memory-02629", 12019 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created" 12020 } 12021 ], 12022 "(VK_VERSION_1_1)": [ 12023 { 12024 "vuid": "VUID-vkBindImageMemory-None-01901", 12025 "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 12026 }, 12027 { 12028 "vuid": "VUID-vkBindImageMemory-None-01902", 12029 "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 12030 } 12031 ], 12032 "(VK_NV_dedicated_allocation)": [ 12033 { 12034 "vuid": "VUID-vkBindImageMemory-image-01050", 12035 "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 12036 } 12037 ], 12038 "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 12039 { 12040 "vuid": "VUID-vkBindImageMemory-image-01051", 12041 "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" 12042 } 12043 ], 12044 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 12045 { 12046 "vuid": "VUID-vkBindImageMemory-memory-02728", 12047 "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 12048 } 12049 ], 12050 "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 12051 { 12052 "vuid": "VUID-vkBindImageMemory-memory-02729", 12053 "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 12054 } 12055 ], 12056 "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 12057 { 12058 "vuid": "VUID-vkBindImageMemory-memory-02989", 12059 "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 12060 }, 12061 { 12062 "vuid": "VUID-vkBindImageMemory-memory-02990", 12063 "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 12064 } 12065 ], 12066 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 12067 { 12068 "vuid": "VUID-vkBindImageMemory-image-01608", 12069 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set" 12070 } 12071 ] 12072 }, 12073 "vkBindImageMemory2": { 12074 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 12075 { 12076 "vuid": "VUID-vkBindImageMemory2-pBindInfos-02858", 12077 "text": " If any <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::image was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> then all planes of <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a>::image <strong class=\"purple\">must</strong> be bound individually in separate <code>pBindInfos</code>" 12078 }, 12079 { 12080 "vuid": "VUID-vkBindImageMemory2-pBindInfos-04006", 12081 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> not refer to the same image subresource more than once" 12082 } 12083 ], 12084 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [ 12085 { 12086 "vuid": "VUID-vkBindImageMemory2-device-parameter", 12087 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12088 }, 12089 { 12090 "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter", 12091 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindImageMemoryInfo\">VkBindImageMemoryInfo</a> structures" 12092 }, 12093 { 12094 "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength", 12095 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12096 } 12097 ] 12098 }, 12099 "VkBindImageMemoryInfo": { 12100 "core": [ 12101 { 12102 "vuid": "VUID-VkBindImageMemoryInfo-image-01044", 12103 "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 12104 }, 12105 { 12106 "vuid": "VUID-VkBindImageMemoryInfo-image-01045", 12107 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags" 12108 }, 12109 { 12110 "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01046", 12111 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 12112 } 12113 ], 12114 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 12115 { 12116 "vuid": "VUID-VkBindImageMemoryInfo-image-01445", 12117 "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>" 12118 } 12119 ], 12120 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [ 12121 { 12122 "vuid": "VUID-VkBindImageMemoryInfo-memory-01509", 12123 "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 12124 } 12125 ], 12126 "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [ 12127 { 12128 "vuid": "VUID-VkBindImageMemoryInfo-memory-02628", 12129 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 12130 }, 12131 { 12132 "vuid": "VUID-VkBindImageMemoryInfo-memory-02629", 12133 "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> structure in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created" 12134 } 12135 ], 12136 "(VK_VERSION_1_1)": [ 12137 { 12138 "vuid": "VUID-VkBindImageMemoryInfo-None-01901", 12139 "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 12140 }, 12141 { 12142 "vuid": "VUID-VkBindImageMemoryInfo-None-01902", 12143 "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>" 12144 } 12145 ], 12146 "(VK_NV_dedicated_allocation)": [ 12147 { 12148 "vuid": "VUID-VkBindImageMemoryInfo-image-01050", 12149 "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero" 12150 } 12151 ], 12152 "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [ 12153 { 12154 "vuid": "VUID-VkBindImageMemoryInfo-image-01051", 12155 "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image" 12156 } 12157 ], 12158 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 12159 { 12160 "vuid": "VUID-VkBindImageMemoryInfo-memory-02728", 12161 "text": " If the value of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> used to allocate <code>memory</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> include at least one of the handles set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 12162 } 12163 ], 12164 "(VK_VERSION_1_1,VK_KHR_external_memory)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 12165 { 12166 "vuid": "VUID-VkBindImageMemoryInfo-memory-02729", 12167 "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 12168 } 12169 ], 12170 "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 12171 { 12172 "vuid": "VUID-VkBindImageMemoryInfo-memory-02989", 12173 "text": " If <code>memory</code> was created by a memory import operation, that is not <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> with a non-<code>NULL</code> <code>buffer</code> value, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 12174 }, 12175 { 12176 "vuid": "VUID-VkBindImageMemoryInfo-memory-02990", 12177 "text": " If <code>memory</code> was created with the <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a> memory import operation with a non-<code>NULL</code> <code>buffer</code> value, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 12178 } 12179 ], 12180 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 12181 { 12182 "vuid": "VUID-VkBindImageMemoryInfo-memory-01612", 12183 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>" 12184 }, 12185 { 12186 "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613", 12187 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>" 12188 }, 12189 { 12190 "vuid": "VUID-VkBindImageMemoryInfo-memory-01614", 12191 "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>" 12192 } 12193 ], 12194 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 12195 { 12196 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615", 12197 "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>" 12198 }, 12199 { 12200 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616", 12201 "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>" 12202 }, 12203 { 12204 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617", 12205 "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>" 12206 }, 12207 { 12208 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618", 12209 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set" 12210 }, 12211 { 12212 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619", 12213 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure’s <code>pNext</code> chain" 12214 }, 12215 { 12216 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620", 12217 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure’s <code>pNext</code> chain" 12218 }, 12219 { 12220 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621", 12221 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and where <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>::<code>planeAspect</code> corresponds to the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>::<code>planeAspect</code> in the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure’s <code>pNext</code> chain" 12222 } 12223 ], 12224 "!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [ 12225 { 12226 "vuid": "VUID-VkBindImageMemoryInfo-memory-01625", 12227 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 12228 } 12229 ], 12230 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 12231 { 12232 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626", 12233 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated" 12234 }, 12235 { 12236 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627", 12237 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set" 12238 }, 12239 { 12240 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628", 12241 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>" 12242 }, 12243 { 12244 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629", 12245 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a> structure, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image" 12246 } 12247 ], 12248 "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [ 12249 { 12250 "vuid": "VUID-VkBindImageMemoryInfo-image-01630", 12251 "text": " If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure containing the same swapchain handle" 12252 }, 12253 { 12254 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631", 12255 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 12256 }, 12257 { 12258 "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632", 12259 "text": " If the <code>pNext</code> chain does not include a <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 12260 } 12261 ], 12262 "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [ 12263 { 12264 "vuid": "VUID-VkBindImageMemoryInfo-sType-sType", 12265 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>" 12266 }, 12267 { 12268 "vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext", 12269 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, or <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>" 12270 }, 12271 { 12272 "vuid": "VUID-VkBindImageMemoryInfo-sType-unique", 12273 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 12274 }, 12275 { 12276 "vuid": "VUID-VkBindImageMemoryInfo-image-parameter", 12277 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 12278 }, 12279 { 12280 "vuid": "VUID-VkBindImageMemoryInfo-commonparent", 12281 "text": " Both of <code>image</code>, and <code>memory</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 12282 } 12283 ] 12284 }, 12285 "VkBindImageMemoryDeviceGroupInfo": { 12286 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 12287 { 12288 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633", 12289 "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero" 12290 }, 12291 { 12292 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634", 12293 "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device" 12294 }, 12295 { 12296 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635", 12297 "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices" 12298 }, 12299 { 12300 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636", 12301 "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device squared" 12302 }, 12303 { 12304 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637", 12305 "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap" 12306 }, 12307 { 12308 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638", 12309 "text": " The <code>offset.x</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of all non-metadata aspects of the image" 12310 }, 12311 { 12312 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639", 12313 "text": " The <code>offset.y</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of all non-metadata aspects of the image" 12314 }, 12315 { 12316 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640", 12317 "text": " The <code>extent.width</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else <code>extent.width</code> + <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource" 12318 }, 12319 { 12320 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641", 12321 "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code> + <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource" 12322 }, 12323 { 12324 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType", 12325 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>" 12326 }, 12327 { 12328 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter", 12329 "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values" 12330 }, 12331 { 12332 "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter", 12333 "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 12334 } 12335 ] 12336 }, 12337 "VkBindImageMemorySwapchainInfoKHR": { 12338 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [ 12339 { 12340 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644", 12341 "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>" 12342 }, 12343 { 12344 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType", 12345 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>" 12346 }, 12347 { 12348 "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter", 12349 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 12350 } 12351 ] 12352 }, 12353 "VkBindImagePlaneMemoryInfo": { 12354 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 12355 { 12356 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283", 12357 "text": " If the image’s <code>tiling</code> is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image (that is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)" 12358 }, 12359 { 12360 "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType", 12361 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>" 12362 }, 12363 { 12364 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter", 12365 "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value" 12366 } 12367 ], 12368 "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [ 12369 { 12370 "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284", 12371 "text": " If the image’s <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the image (that is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with the image’s <code>format</code> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\">VkImageDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifier</code>)" 12372 } 12373 ] 12374 }, 12375 "vkCreateAccelerationStructureNV": { 12376 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12377 { 12378 "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter", 12379 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12380 }, 12381 { 12382 "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter", 12383 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoNV\">VkAccelerationStructureCreateInfoNV</a> structure" 12384 }, 12385 { 12386 "vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter", 12387 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 12388 }, 12389 { 12390 "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter", 12391 "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle" 12392 } 12393 ] 12394 }, 12395 "VkAccelerationStructureCreateInfoNV": { 12396 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12397 { 12398 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421", 12399 "text": " If <code>compactedSize</code> is not <code>0</code> then both <code>info.geometryCount</code> and <code>info.instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 12400 }, 12401 { 12402 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType", 12403 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>" 12404 }, 12405 { 12406 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext", 12407 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12408 }, 12409 { 12410 "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter", 12411 "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure" 12412 } 12413 ] 12414 }, 12415 "VkAccelerationStructureInfoNV": { 12416 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12417 { 12418 "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422", 12419 "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>" 12420 }, 12421 { 12422 "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423", 12423 "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>" 12424 }, 12425 { 12426 "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424", 12427 "text": " The total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxTriangleCount</code>" 12428 }, 12429 { 12430 "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425", 12431 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 12432 }, 12433 { 12434 "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426", 12435 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then <code>instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 12436 }, 12437 { 12438 "vuid": "VUID-VkAccelerationStructureInfoNV-type-02786", 12439 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then the <code>geometryType</code> member of each geometry in <code>pGeometries</code> <strong class=\"purple\">must</strong> be the same" 12440 }, 12441 { 12442 "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592", 12443 "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV</code> bit set" 12444 }, 12445 { 12446 "vuid": "VUID-VkAccelerationStructureInfoNV-scratch-02781", 12447 "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag" 12448 }, 12449 { 12450 "vuid": "VUID-VkAccelerationStructureInfoNV-instanceData-02782", 12451 "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag" 12452 }, 12453 { 12454 "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType", 12455 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>" 12456 }, 12457 { 12458 "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext", 12459 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12460 }, 12461 { 12462 "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter", 12463 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value" 12464 }, 12465 { 12466 "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter", 12467 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values" 12468 }, 12469 { 12470 "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter", 12471 "text": " If <code>geometryCount</code> is not <code>0</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <a href=\"#VkGeometryNV\">VkGeometryNV</a> structures" 12472 } 12473 ] 12474 }, 12475 "vkCreateAccelerationStructureKHR": { 12476 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 12477 { 12478 "vuid": "VUID-vkCreateAccelerationStructureKHR-rayTracing-03487", 12479 "text": " The <a href=\"#features-raytracing\"><code>rayTracing</code></a> or <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature <strong class=\"purple\">must</strong> be enabled" 12480 }, 12481 { 12482 "vuid": "VUID-vkCreateAccelerationStructureKHR-deviceAddress-03488", 12483 "text": " If <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>deviceAddress</code> is not zero, the <a href=\"#features-raytracing-ascapturereplay\"><code>rayTracingAccelerationStructureCaptureReplay</code></a> feature <strong class=\"purple\">must</strong> be enabled" 12484 }, 12485 { 12486 "vuid": "VUID-vkCreateAccelerationStructureKHR-device-03489", 12487 "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled" 12488 }, 12489 { 12490 "vuid": "VUID-vkCreateAccelerationStructureKHR-device-parameter", 12491 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12492 }, 12493 { 12494 "vuid": "VUID-vkCreateAccelerationStructureKHR-pCreateInfo-parameter", 12495 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> structure" 12496 }, 12497 { 12498 "vuid": "VUID-vkCreateAccelerationStructureKHR-pAllocator-parameter", 12499 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 12500 }, 12501 { 12502 "vuid": "VUID-vkCreateAccelerationStructureKHR-pAccelerationStructure-parameter", 12503 "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 12504 } 12505 ] 12506 }, 12507 "VkAccelerationStructureCreateInfoKHR": { 12508 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 12509 { 12510 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-compactedSize-03490", 12511 "text": " If <code>compactedSize</code> is not <code>0</code> then <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 12512 }, 12513 { 12514 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-compactedSize-02993", 12515 "text": " If <code>compactedSize</code> is <code>0</code> then <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 12516 }, 12517 { 12518 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03491", 12519 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxGeometryCount</code>" 12520 }, 12521 { 12522 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03492", 12523 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> then the <code>maxPrimitiveCount</code> member of each element of the <code>pGeometryInfos</code> array <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxInstanceCount</code>" 12524 }, 12525 { 12526 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-maxPrimitiveCount-03493", 12527 "text": " The total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxPrimitiveCount</code>" 12528 }, 12529 { 12530 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-maxPrimitiveCount-03494", 12531 "text": " The total number of AABBs in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesKHR\">VkPhysicalDeviceRayTracingPropertiesKHR</a>::<code>maxPrimitiveCount</code>" 12532 }, 12533 { 12534 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03495", 12535 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> and <code>compactedSize</code> is <code>0</code>, <code>maxGeometryCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 12536 }, 12537 { 12538 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03496", 12539 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code> and <code>compactedSize</code> is <code>0</code>, the <code>geometryType</code> member of elements of <code>pGeometryInfos</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>" 12540 }, 12541 { 12542 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03497", 12543 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> and <code>compactedSize</code> is <code>0</code>, the <code>geometryType</code> member of elements of <code>pGeometryInfos</code> <strong class=\"purple\">must</strong> not be <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>" 12544 }, 12545 { 12546 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-03498", 12547 "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR</code> then the <code>geometryType</code> member of each geometry in <code>pGeometryInfos</code> <strong class=\"purple\">must</strong> be the same" 12548 }, 12549 { 12550 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-flags-03499", 12551 "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR</code> bit set" 12552 }, 12553 { 12554 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-deviceAddress-03500", 12555 "text": " If <code>deviceAddress</code> is not <code>0</code>, <a href=\"#VkPhysicalDeviceRayTracingFeaturesKHR\">VkPhysicalDeviceRayTracingFeaturesKHR</a>::<code>rayTracingAccelerationStructureCaptureReplay</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 12556 }, 12557 { 12558 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-sType-sType", 12559 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR</code>" 12560 }, 12561 { 12562 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pNext-pNext", 12563 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12564 }, 12565 { 12566 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-type-parameter", 12567 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value" 12568 }, 12569 { 12570 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-flags-parameter", 12571 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values" 12572 }, 12573 { 12574 "vuid": "VUID-VkAccelerationStructureCreateInfoKHR-pGeometryInfos-parameter", 12575 "text": " If <code>maxGeometryCount</code> is not <code>0</code>, <code>pGeometryInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>maxGeometryCount</code> valid <a href=\"#VkAccelerationStructureCreateGeometryTypeInfoKHR\">VkAccelerationStructureCreateGeometryTypeInfoKHR</a> structures" 12576 } 12577 ] 12578 }, 12579 "VkAccelerationStructureCreateGeometryTypeInfoKHR": { 12580 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 12581 { 12582 "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-03501", 12583 "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>vertexFormat</code> <strong class=\"purple\">must</strong> support the <code>VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR</code> in <a href=\"#VkFormatProperties\">VkFormatProperties</a>::<code>bufferFeatures</code> as returned by <a href=\"#vkGetPhysicalDeviceFormatProperties2\">vkGetPhysicalDeviceFormatProperties2</a>" 12584 }, 12585 { 12586 "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-03502", 12587 "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_KHR</code>" 12588 }, 12589 { 12590 "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-sType-sType", 12591 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_GEOMETRY_TYPE_INFO_KHR</code>" 12592 }, 12593 { 12594 "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-pNext-pNext", 12595 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12596 }, 12597 { 12598 "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-geometryType-parameter", 12599 "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value" 12600 }, 12601 { 12602 "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-indexType-parameter", 12603 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value" 12604 }, 12605 { 12606 "vuid": "VUID-VkAccelerationStructureCreateGeometryTypeInfoKHR-vertexFormat-parameter", 12607 "text": " If <code>vertexFormat</code> is not <code>0</code>, <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 12608 } 12609 ] 12610 }, 12611 "VkGeometryNV": { 12612 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12613 { 12614 "vuid": "VUID-VkGeometryNV-geometryType-03503", 12615 "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be <code>VK_GEOMETRY_TYPE_TRIANGLES_NV</code> or <code>VK_GEOMETRY_TYPE_AABBS_NV</code>" 12616 }, 12617 { 12618 "vuid": "VUID-VkGeometryNV-sType-sType", 12619 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>" 12620 }, 12621 { 12622 "vuid": "VUID-VkGeometryNV-pNext-pNext", 12623 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12624 }, 12625 { 12626 "vuid": "VUID-VkGeometryNV-geometryType-parameter", 12627 "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value" 12628 }, 12629 { 12630 "vuid": "VUID-VkGeometryNV-geometry-parameter", 12631 "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryDataNV\">VkGeometryDataNV</a> structure" 12632 }, 12633 { 12634 "vuid": "VUID-VkGeometryNV-flags-parameter", 12635 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values" 12636 } 12637 ] 12638 }, 12639 "VkGeometryDataNV": { 12640 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12641 { 12642 "vuid": "VUID-VkGeometryDataNV-triangles-parameter", 12643 "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTrianglesNV\">VkGeometryTrianglesNV</a> structure" 12644 }, 12645 { 12646 "vuid": "VUID-VkGeometryDataNV-aabbs-parameter", 12647 "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryAABBNV\">VkGeometryAABBNV</a> structure" 12648 } 12649 ] 12650 }, 12651 "VkGeometryTrianglesNV": { 12652 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12653 { 12654 "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428", 12655 "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>" 12656 }, 12657 { 12658 "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429", 12659 "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>" 12660 }, 12661 { 12662 "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430", 12663 "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R32G32B32_SFLOAT</code>, <code>VK_FORMAT_R32G32_SFLOAT</code>, <code>VK_FORMAT_R16G16B16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SNORM</code>, or <code>VK_FORMAT_R16G16B16_SNORM</code>" 12664 }, 12665 { 12666 "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431", 12667 "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>" 12668 }, 12669 { 12670 "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432", 12671 "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>" 12672 }, 12673 { 12674 "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433", 12675 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_NV</code>" 12676 }, 12677 { 12678 "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434", 12679 "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>" 12680 }, 12681 { 12682 "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435", 12683 "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle if <code>indexType</code> is not <code>VK_INDEX_TYPE_NONE_NV</code>" 12684 }, 12685 { 12686 "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436", 12687 "text": " <code>indexCount</code> <strong class=\"purple\">must</strong> be <code>0</code> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>" 12688 }, 12689 { 12690 "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437", 12691 "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>" 12692 }, 12693 { 12694 "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438", 12695 "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>" 12696 }, 12697 { 12698 "vuid": "VUID-VkGeometryTrianglesNV-sType-sType", 12699 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>" 12700 }, 12701 { 12702 "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext", 12703 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12704 }, 12705 { 12706 "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter", 12707 "text": " If <code>vertexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 12708 }, 12709 { 12710 "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter", 12711 "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 12712 }, 12713 { 12714 "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter", 12715 "text": " If <code>indexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 12716 }, 12717 { 12718 "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter", 12719 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value" 12720 }, 12721 { 12722 "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter", 12723 "text": " If <code>transformData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 12724 }, 12725 { 12726 "vuid": "VUID-VkGeometryTrianglesNV-commonparent", 12727 "text": " Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 12728 } 12729 ] 12730 }, 12731 "VkGeometryAABBNV": { 12732 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12733 { 12734 "vuid": "VUID-VkGeometryAABBNV-offset-02439", 12735 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>" 12736 }, 12737 { 12738 "vuid": "VUID-VkGeometryAABBNV-offset-02440", 12739 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>" 12740 }, 12741 { 12742 "vuid": "VUID-VkGeometryAABBNV-stride-02441", 12743 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>" 12744 }, 12745 { 12746 "vuid": "VUID-VkGeometryAABBNV-sType-sType", 12747 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>" 12748 }, 12749 { 12750 "vuid": "VUID-VkGeometryAABBNV-pNext-pNext", 12751 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12752 }, 12753 { 12754 "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter", 12755 "text": " If <code>aabbData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>aabbData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 12756 } 12757 ] 12758 }, 12759 "vkDestroyAccelerationStructureKHR": { 12760 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 12761 { 12762 "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02442", 12763 "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution" 12764 }, 12765 { 12766 "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02443", 12767 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 12768 }, 12769 { 12770 "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-02444", 12771 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12772 }, 12773 { 12774 "vuid": "VUID-vkDestroyAccelerationStructureKHR-device-parameter", 12775 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12776 }, 12777 { 12778 "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parameter", 12779 "text": " If <code>accelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 12780 }, 12781 { 12782 "vuid": "VUID-vkDestroyAccelerationStructureKHR-pAllocator-parameter", 12783 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 12784 }, 12785 { 12786 "vuid": "VUID-vkDestroyAccelerationStructureKHR-accelerationStructure-parent", 12787 "text": " If <code>accelerationStructure</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 12788 } 12789 ] 12790 }, 12791 "vkGetAccelerationStructureMemoryRequirementsNV": { 12792 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12793 { 12794 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter", 12795 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12796 }, 12797 { 12798 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter", 12799 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a> structure" 12800 }, 12801 { 12802 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter", 12803 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2KHR\">VkMemoryRequirements2KHR</a> structure" 12804 } 12805 ] 12806 }, 12807 "VkAccelerationStructureMemoryRequirementsInfoNV": { 12808 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12809 { 12810 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType", 12811 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>" 12812 }, 12813 { 12814 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext", 12815 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12816 }, 12817 { 12818 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter", 12819 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value" 12820 }, 12821 { 12822 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter", 12823 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureNV\">VkAccelerationStructureNV</a> handle" 12824 } 12825 ] 12826 }, 12827 "vkGetAccelerationStructureMemoryRequirementsKHR": { 12828 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 12829 { 12830 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-device-parameter", 12831 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12832 }, 12833 { 12834 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-pInfo-parameter", 12835 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a> structure" 12836 }, 12837 { 12838 "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsKHR-pMemoryRequirements-parameter", 12839 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure" 12840 } 12841 ] 12842 }, 12843 "VkAccelerationStructureMemoryRequirementsInfoKHR": { 12844 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 12845 { 12846 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-sType-sType", 12847 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_KHR</code>" 12848 }, 12849 { 12850 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-pNext-pNext", 12851 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12852 }, 12853 { 12854 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-type-parameter", 12855 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeKHR\">VkAccelerationStructureMemoryRequirementsTypeKHR</a> value" 12856 }, 12857 { 12858 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-buildType-parameter", 12859 "text": " <code>buildType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureBuildTypeKHR\">VkAccelerationStructureBuildTypeKHR</a> value" 12860 }, 12861 { 12862 "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoKHR-accelerationStructure-parameter", 12863 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 12864 } 12865 ] 12866 }, 12867 "vkBindAccelerationStructureMemoryKHR": { 12868 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 12869 { 12870 "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-device-parameter", 12871 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12872 }, 12873 { 12874 "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-pBindInfos-parameter", 12875 "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindAccelerationStructureMemoryInfoKHR\">VkBindAccelerationStructureMemoryInfoKHR</a> structures" 12876 }, 12877 { 12878 "vuid": "VUID-vkBindAccelerationStructureMemoryKHR-bindInfoCount-arraylength", 12879 "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12880 } 12881 ] 12882 }, 12883 "VkBindAccelerationStructureMemoryInfoKHR": { 12884 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 12885 { 12886 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-accelerationStructure-02450", 12887 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object" 12888 }, 12889 { 12890 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memoryOffset-02451", 12891 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 12892 }, 12893 { 12894 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memory-02593", 12895 "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR</code>" 12896 }, 12897 { 12898 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memoryOffset-02594", 12899 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR</code>" 12900 }, 12901 { 12902 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-size-02595", 12903 "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_KHR</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 12904 }, 12905 { 12906 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-sType-sType", 12907 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_KHR</code>" 12908 }, 12909 { 12910 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-pNext-pNext", 12911 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12912 }, 12913 { 12914 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-accelerationStructure-parameter", 12915 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 12916 }, 12917 { 12918 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-memory-parameter", 12919 "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 12920 }, 12921 { 12922 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-pDeviceIndices-parameter", 12923 "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values" 12924 }, 12925 { 12926 "vuid": "VUID-VkBindAccelerationStructureMemoryInfoKHR-commonparent", 12927 "text": " Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 12928 } 12929 ] 12930 }, 12931 "vkGetAccelerationStructureHandleNV": { 12932 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 12933 { 12934 "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240", 12935 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above" 12936 }, 12937 { 12938 "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-02787", 12939 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object via <a href=\"#vkBindAccelerationStructureMemoryKHR\">vkBindAccelerationStructureMemoryKHR</a>" 12940 }, 12941 { 12942 "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter", 12943 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12944 }, 12945 { 12946 "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter", 12947 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 12948 }, 12949 { 12950 "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter", 12951 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 12952 }, 12953 { 12954 "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength", 12955 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 12956 }, 12957 { 12958 "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent", 12959 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 12960 } 12961 ] 12962 }, 12963 "vkGetAccelerationStructureDeviceAddressKHR": { 12964 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 12965 { 12966 "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-03504", 12967 "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled" 12968 }, 12969 { 12970 "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-device-parameter", 12971 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 12972 }, 12973 { 12974 "vuid": "VUID-vkGetAccelerationStructureDeviceAddressKHR-pInfo-parameter", 12975 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureDeviceAddressInfoKHR\">VkAccelerationStructureDeviceAddressInfoKHR</a> structure" 12976 } 12977 ] 12978 }, 12979 "VkAccelerationStructureDeviceAddressInfoKHR": { 12980 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 12981 { 12982 "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-sType-sType", 12983 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR</code>" 12984 }, 12985 { 12986 "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-pNext-pNext", 12987 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 12988 }, 12989 { 12990 "vuid": "VUID-VkAccelerationStructureDeviceAddressInfoKHR-accelerationStructure-parameter", 12991 "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 12992 } 12993 ] 12994 }, 12995 "vkCreateSampler": { 12996 "core": [ 12997 { 12998 "vuid": "VUID-vkCreateSampler-maxSamplerAllocationCount-04110", 12999 "text": " There <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerAllocationCount</code> VkSampler objects currently created on the device." 13000 }, 13001 { 13002 "vuid": "VUID-vkCreateSampler-device-parameter", 13003 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 13004 }, 13005 { 13006 "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter", 13007 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a> structure" 13008 }, 13009 { 13010 "vuid": "VUID-vkCreateSampler-pAllocator-parameter", 13011 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 13012 }, 13013 { 13014 "vuid": "VUID-vkCreateSampler-pSampler-parameter", 13015 "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSampler\">VkSampler</a> handle" 13016 } 13017 ] 13018 }, 13019 "VkSamplerCreateInfo": { 13020 "core": [ 13021 { 13022 "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069", 13023 "text": " The absolute value of <code>mipLodBias</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerLodBias</code>" 13024 }, 13025 { 13026 "vuid": "VUID-VkSamplerCreateInfo-maxLod-01973", 13027 "text": " <code>maxLod</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>minLod</code>" 13028 }, 13029 { 13030 "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070", 13031 "text": " If the <a href=\"#features-samplerAnisotropy\">anisotropic sampling</a> feature is not enabled, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13032 }, 13033 { 13034 "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071", 13035 "text": " If <code>anisotropyEnable</code> is <code>VK_TRUE</code>, <code>maxAnisotropy</code> <strong class=\"purple\">must</strong> be between <code>1.0</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerAnisotropy</code>, inclusive" 13036 }, 13037 { 13038 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072", 13039 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal" 13040 }, 13041 { 13042 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073", 13043 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>" 13044 }, 13045 { 13046 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074", 13047 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero" 13048 }, 13049 { 13050 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075", 13051 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>" 13052 }, 13053 { 13054 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076", 13055 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13056 }, 13057 { 13058 "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077", 13059 "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13060 }, 13061 { 13062 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078", 13063 "text": " If any of <code>addressModeU</code>, <code>addressModeV</code> or <code>addressModeW</code> are <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>, <code>borderColor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBorderColor\">VkBorderColor</a> value" 13064 }, 13065 { 13066 "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080", 13067 "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value" 13068 }, 13069 { 13070 "vuid": "VUID-VkSamplerCreateInfo-sType-sType", 13071 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>" 13072 }, 13073 { 13074 "vuid": "VUID-VkSamplerCreateInfo-pNext-pNext", 13075 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>, <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>" 13076 }, 13077 { 13078 "vuid": "VUID-VkSamplerCreateInfo-sType-unique", 13079 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 13080 }, 13081 { 13082 "vuid": "VUID-VkSamplerCreateInfo-flags-parameter", 13083 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSamplerCreateFlagBits\">VkSamplerCreateFlagBits</a> values" 13084 }, 13085 { 13086 "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter", 13087 "text": " <code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 13088 }, 13089 { 13090 "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter", 13091 "text": " <code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 13092 }, 13093 { 13094 "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter", 13095 "text": " <code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value" 13096 }, 13097 { 13098 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter", 13099 "text": " <code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value" 13100 }, 13101 { 13102 "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter", 13103 "text": " <code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value" 13104 }, 13105 { 13106 "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter", 13107 "text": " <code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value" 13108 } 13109 ], 13110 "(VK_KHR_portability_subset)": [ 13111 { 13112 "vuid": "VUID-VkSamplerCreateInfo-samplerMipLodBias-04467", 13113 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>samplerMipLodBias</code> is <code>VK_FALSE</code>, <code>mipLodBias</code> <strong class=\"purple\">must</strong> be zero." 13114 } 13115 ], 13116 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13117 { 13118 "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645", 13119 "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler {YCbCr} conversion</a> is enabled and the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal to the sampler {YCbCr} conversion’s <code>chromaFilter</code>" 13120 }, 13121 { 13122 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646", 13123 "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler {YCbCr} conversion</a> is enabled, <code>addressModeU</code>, <code>addressModeV</code>, and <code>addressModeW</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>, and <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13124 } 13125 ], 13126 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [ 13127 { 13128 "vuid": "VUID-VkSamplerCreateInfo-None-01647", 13129 "text": " The sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code> if <a href=\"#samplers-YCbCr-conversion\">sampler {YCbCr} conversion</a> is enabled" 13130 } 13131 ], 13132 "(VK_VERSION_1_2,VK_KHR_sampler_mirror_clamp_to_edge)": [ 13133 { 13134 "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079", 13135 "text": " If ifdef::VK_VERSION_1_2[<a href=\"#features-samplerMirrorClampToEdge\">samplerMirrorClampToEdge</a> is not enabled, and if] the <code><a href=\"#VK_KHR_sampler_mirror_clamp_to_edge\">VK_KHR_sampler_mirror_clamp_to_edge</a></code> extension is not enabled, <code>addressModeU</code>, <code>addressModeV</code> and <code>addressModeW</code> <strong class=\"purple\">must</strong> not be <code>VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE</code>" 13136 } 13137 ], 13138 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 13139 { 13140 "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081", 13141 "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13142 } 13143 ], 13144 "(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [ 13145 { 13146 "vuid": "VUID-VkSamplerCreateInfo-magFilter-01422", 13147 "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>" 13148 } 13149 ], 13150 "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [ 13151 { 13152 "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423", 13153 "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfo\">VkSamplerReductionModeCreateInfo</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE</code>" 13154 } 13155 ], 13156 "(VK_EXT_fragment_density_map)": [ 13157 { 13158 "vuid": "VUID-VkSamplerCreateInfo-flags-02574", 13159 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal" 13160 }, 13161 { 13162 "vuid": "VUID-VkSamplerCreateInfo-flags-02575", 13163 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>" 13164 }, 13165 { 13166 "vuid": "VUID-VkSamplerCreateInfo-flags-02576", 13167 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero" 13168 }, 13169 { 13170 "vuid": "VUID-VkSamplerCreateInfo-flags-02577", 13171 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>" 13172 }, 13173 { 13174 "vuid": "VUID-VkSamplerCreateInfo-flags-02578", 13175 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13176 }, 13177 { 13178 "vuid": "VUID-VkSamplerCreateInfo-flags-02579", 13179 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13180 }, 13181 { 13182 "vuid": "VUID-VkSamplerCreateInfo-flags-02580", 13183 "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13184 } 13185 ], 13186 "(VK_EXT_custom_border_color)": [ 13187 { 13188 "vuid": "VUID-VkSamplerCreateInfo-borderColor-04011", 13189 "text": " If <code>borderColor</code> is one of <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>, then a <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a> <strong class=\"purple\">must</strong> be present in the <code>pNext</code> chain" 13190 }, 13191 { 13192 "vuid": "VUID-VkSamplerCreateInfo-customBorderColors-04085", 13193 "text": " If the <a href=\"#features-customBorderColors\"><code>customBorderColors</code></a> feature is not enabled, <code>borderColor</code> <strong class=\"purple\">must</strong> not be <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>" 13194 }, 13195 { 13196 "vuid": "VUID-VkSamplerCreateInfo-borderColor-04442", 13197 "text": " If <code>borderColor</code> is one of <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>, and <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>::<code>format</code> is not <code>VK_FORMAT_UNDEFINED</code>, <a href=\"#VkSamplerCustomBorderColorCreateInfoEXT\">VkSamplerCustomBorderColorCreateInfoEXT</a>::<code>customBorderColor</code> <strong class=\"purple\">must</strong> be within the range of values representable in <code>format</code>." 13198 }, 13199 { 13200 "vuid": "VUID-VkSamplerCreateInfo-None-04012", 13201 "text": " The maximum number of samplers with custom border colors which <strong class=\"purple\">can</strong> be simultaneously created on a device is implementation-dependent and specified by the <a href=\"#limits-maxCustomBorderColorSamplers\">maxCustomBorderColorSamplers</a> member of the <a href=\"#VkPhysicalDeviceCustomBorderColorPropertiesEXT\">VkPhysicalDeviceCustomBorderColorPropertiesEXT</a> structure" 13202 } 13203 ] 13204 }, 13205 "VkSamplerReductionModeCreateInfo": { 13206 "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [ 13207 { 13208 "vuid": "VUID-VkSamplerReductionModeCreateInfo-sType-sType", 13209 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO</code>" 13210 }, 13211 { 13212 "vuid": "VUID-VkSamplerReductionModeCreateInfo-reductionMode-parameter", 13213 "text": " <code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionMode\">VkSamplerReductionMode</a> value" 13214 } 13215 ] 13216 }, 13217 "vkDestroySampler": { 13218 "core": [ 13219 { 13220 "vuid": "VUID-vkDestroySampler-sampler-01082", 13221 "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution" 13222 }, 13223 { 13224 "vuid": "VUID-vkDestroySampler-sampler-01083", 13225 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 13226 }, 13227 { 13228 "vuid": "VUID-vkDestroySampler-sampler-01084", 13229 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 13230 }, 13231 { 13232 "vuid": "VUID-vkDestroySampler-device-parameter", 13233 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 13234 }, 13235 { 13236 "vuid": "VUID-vkDestroySampler-sampler-parameter", 13237 "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> handle" 13238 }, 13239 { 13240 "vuid": "VUID-vkDestroySampler-pAllocator-parameter", 13241 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 13242 }, 13243 { 13244 "vuid": "VUID-vkDestroySampler-sampler-parent", 13245 "text": " If <code>sampler</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 13246 } 13247 ] 13248 }, 13249 "VkSamplerYcbcrConversionInfo": { 13250 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13251 { 13252 "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType", 13253 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>" 13254 }, 13255 { 13256 "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter", 13257 "text": " <code>conversion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle" 13258 } 13259 ] 13260 }, 13261 "vkCreateSamplerYcbcrConversion": { 13262 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13263 { 13264 "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648", 13265 "text": " The <a href=\"#features-samplerYcbcrConversion\">sampler {YCbCr} conversion feature</a> <strong class=\"purple\">must</strong> be enabled" 13266 }, 13267 { 13268 "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter", 13269 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 13270 }, 13271 { 13272 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter", 13273 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSamplerYcbcrConversionCreateInfo\">VkSamplerYcbcrConversionCreateInfo</a> structure" 13274 }, 13275 { 13276 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter", 13277 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 13278 }, 13279 { 13280 "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter", 13281 "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle" 13282 } 13283 ] 13284 }, 13285 "VkSamplerYcbcrConversionCreateInfo": { 13286 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [ 13287 { 13288 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-04060", 13289 "text": " <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)" 13290 } 13291 ], 13292 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 13293 { 13294 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904", 13295 "text": " If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>" 13296 }, 13297 { 13298 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-04061", 13299 "text": " If an external format conversion is not being created, <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)" 13300 } 13301 ], 13302 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13303 { 13304 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650", 13305 "text": " The <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion <strong class=\"purple\">must</strong> support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code> or <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>" 13306 }, 13307 { 13308 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651", 13309 "text": " If the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do not support <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_COSITED_EVEN</code> if the corresponding channels are <a href=\"#textures-chroma-reconstruction\">downsampled</a>" 13310 }, 13311 { 13312 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652", 13313 "text": " If the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do not support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_MIDPOINT</code> if the corresponding channels are <a href=\"#textures-chroma-reconstruction\">downsampled</a>" 13314 }, 13315 { 13316 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581", 13317 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.g</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>" 13318 }, 13319 { 13320 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582", 13321 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.a</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>, <code>VK_COMPONENT_SWIZZLE_ONE</code>, or <code>VK_COMPONENT_SWIZZLE_ZERO</code>" 13322 }, 13323 { 13324 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583", 13325 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.r</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a> or <code>VK_COMPONENT_SWIZZLE_B</code>" 13326 }, 13327 { 13328 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584", 13329 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.b</code> <strong class=\"purple\">must</strong> be the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a> or <code>VK_COMPONENT_SWIZZLE_R</code>" 13330 }, 13331 { 13332 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585", 13333 "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, and if either <code>components.r</code> or <code>components.b</code> is the <a href=\"#resources-image-views-identity-mappings\">identity swizzle</a>, both values <strong class=\"purple\">must</strong> be the identity swizzle" 13334 }, 13335 { 13336 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655", 13337 "text": " If <code>ycbcrModel</code> is not <code>VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY</code>, then <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> correspond to channels of the <code>format</code>; that is, <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> not be <code>VK_COMPONENT_SWIZZLE_ZERO</code> or <code>VK_COMPONENT_SWIZZLE_ONE</code>, and <strong class=\"purple\">must</strong> not correspond to a channel which contains zero or one as a consequence of <a href=\"#textures-conversion-to-rgba\">conversion to RGBA</a>" 13338 }, 13339 { 13340 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-02748", 13341 "text": " If <code>ycbcrRange</code> is <code>VK_SAMPLER_YCBCR_RANGE_ITU_NARROW</code> then the R, G and B channels obtained by applying the <code>component</code> swizzle to <code>format</code> <strong class=\"purple\">must</strong> each have a bit-depth greater than or equal to 8" 13342 }, 13343 { 13344 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656", 13345 "text": " If the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT</code> <code>forceExplicitReconstruction</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 13346 }, 13347 { 13348 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657", 13349 "text": " If the <a href=\"#potential-format-features\">potential format features</a> of the sampler {YCbCr} conversion do not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT</code>, <code>chromaFilter</code> <strong class=\"purple\">must</strong> not be <code>VK_FILTER_LINEAR</code>" 13350 }, 13351 { 13352 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType", 13353 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>" 13354 }, 13355 { 13356 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext", 13357 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>" 13358 }, 13359 { 13360 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-unique", 13361 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 13362 }, 13363 { 13364 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter", 13365 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 13366 }, 13367 { 13368 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter", 13369 "text": " <code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value" 13370 }, 13371 { 13372 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter", 13373 "text": " <code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value" 13374 }, 13375 { 13376 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter", 13377 "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentMapping\">VkComponentMapping</a> structure" 13378 }, 13379 { 13380 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter", 13381 "text": " <code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value" 13382 }, 13383 { 13384 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter", 13385 "text": " <code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value" 13386 }, 13387 { 13388 "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter", 13389 "text": " <code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 13390 } 13391 ] 13392 }, 13393 "vkDestroySamplerYcbcrConversion": { 13394 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 13395 { 13396 "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter", 13397 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 13398 }, 13399 { 13400 "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter", 13401 "text": " If <code>ycbcrConversion</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>ycbcrConversion</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrConversion\">VkSamplerYcbcrConversion</a> handle" 13402 }, 13403 { 13404 "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter", 13405 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 13406 }, 13407 { 13408 "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent", 13409 "text": " If <code>ycbcrConversion</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 13410 } 13411 ] 13412 }, 13413 "VkSamplerCustomBorderColorCreateInfoEXT": { 13414 "(VK_EXT_custom_border_color)": [ 13415 { 13416 "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04013", 13417 "text": " If provided <code>format</code> is not <code>VK_FORMAT_UNDEFINED</code> then the <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a>::<code>borderColor</code> type <strong class=\"purple\">must</strong> match the sampled type of the provided <code>format</code>, as shown in the <em>SPIR-V Sampled Type</em> column of the <a href=\"#formats-numericformat\">Interpretation of Numeric Format</a> table" 13418 }, 13419 { 13420 "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04014", 13421 "text": " If the <a href=\"#features-customBorderColorWithoutFormat\">customBorderColorWithoutFormat</a> feature is not enabled then <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>" 13422 }, 13423 { 13424 "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-04015", 13425 "text": " If the sampler is used to sample an image view of <code>VK_FORMAT_B4G4R4A4_UNORM_PACK16</code>, <code>VK_FORMAT_B5G6R5_UNORM_PACK16</code>, or <code>VK_FORMAT_B5G5R5A1_UNORM_PACK16</code> format then <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>" 13426 }, 13427 { 13428 "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-sType-sType", 13429 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT</code>" 13430 }, 13431 { 13432 "vuid": "VUID-VkSamplerCustomBorderColorCreateInfoEXT-format-parameter", 13433 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 13434 } 13435 ] 13436 }, 13437 "vkCreateDescriptorSetLayout": { 13438 "core": [ 13439 { 13440 "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter", 13441 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 13442 }, 13443 { 13444 "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter", 13445 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a> structure" 13446 }, 13447 { 13448 "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter", 13449 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 13450 }, 13451 { 13452 "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter", 13453 "text": " <code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle" 13454 } 13455 ] 13456 }, 13457 "VkDescriptorSetLayoutCreateInfo": { 13458 "core": [ 13459 { 13460 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279", 13461 "text": " The <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a>::<code>binding</code> members of the elements of the <code>pBindings</code> array <strong class=\"purple\">must</strong> each have different values" 13462 }, 13463 { 13464 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType", 13465 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>" 13466 }, 13467 { 13468 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext", 13469 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetLayoutBindingFlagsCreateInfo\">VkDescriptorSetLayoutBindingFlagsCreateInfo</a>" 13470 }, 13471 { 13472 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-unique", 13473 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 13474 }, 13475 { 13476 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter", 13477 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values" 13478 }, 13479 { 13480 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter", 13481 "text": " If <code>bindingCount</code> is not <code>0</code>, <code>pBindings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a> structures" 13482 } 13483 ], 13484 "(VK_KHR_push_descriptor)": [ 13485 { 13486 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280", 13487 "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>" 13488 }, 13489 { 13490 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281", 13491 "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then the total number of elements of all bindings <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>::<code>maxPushDescriptors</code>" 13492 } 13493 ], 13494 "(VK_KHR_push_descriptor)+(VK_EXT_inline_uniform_block)": [ 13495 { 13496 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208", 13497 "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>" 13498 } 13499 ], 13500 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 13501 { 13502 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000", 13503 "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code> bit set, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code>" 13504 }, 13505 { 13506 "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001", 13507 "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code> bit set, then all bindings <strong class=\"purple\">must</strong> not have <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>" 13508 } 13509 ] 13510 }, 13511 "VkDescriptorSetLayoutBinding": { 13512 "core": [ 13513 { 13514 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282", 13515 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>descriptorCount</code> is not <code>0</code> and <code>pImmutableSamplers</code> is not <code>NULL</code>, <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkSampler</code> handles" 13516 }, 13517 { 13518 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283", 13519 "text": " If <code>descriptorCount</code> is not <code>0</code>, <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values" 13520 }, 13521 { 13522 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510", 13523 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> and <code>descriptorCount</code> is not <code>0</code>, then <code>stageFlags</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>" 13524 }, 13525 { 13526 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter", 13527 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 13528 } 13529 ], 13530 "(VK_EXT_inline_uniform_block)": [ 13531 { 13532 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209", 13533 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 13534 }, 13535 { 13536 "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210", 13537 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxInlineUniformBlockSize</code>" 13538 } 13539 ], 13540 "(VK_EXT_custom_border_color)": [ 13541 { 13542 "vuid": "VUID-VkDescriptorSetLayoutBinding-pImmutableSamplers-04009", 13543 "text": " The sampler objects indicated by <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> not have a <code>borderColor</code> with one of the values <code>VK_BORDER_COLOR_FLOAT_CUSTOM_EXT</code> or <code>VK_BORDER_COLOR_INT_CUSTOM_EXT</code>" 13544 } 13545 ] 13546 }, 13547 "VkDescriptorSetLayoutBindingFlagsCreateInfo": { 13548 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 13549 { 13550 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-bindingCount-03002", 13551 "text": " If <code>bindingCount</code> is not zero, <code>bindingCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>bindingCount</code>" 13552 }, 13553 { 13554 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03004", 13555 "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>, then all other elements of <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>pBindings</code> <strong class=\"purple\">must</strong> have a smaller value of <code>binding</code>" 13556 }, 13557 { 13558 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformBufferUpdateAfterBind-03005", 13559 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingUniformBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>" 13560 }, 13561 { 13562 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingSampledImageUpdateAfterBind-03006", 13563 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingSampledImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, or <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>" 13564 }, 13565 { 13566 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageImageUpdateAfterBind-03007", 13567 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingStorageImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>" 13568 }, 13569 { 13570 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageBufferUpdateAfterBind-03008", 13571 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingStorageBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>" 13572 }, 13573 { 13574 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUniformTexelBufferUpdateAfterBind-03009", 13575 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingUniformTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>" 13576 }, 13577 { 13578 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingStorageTexelBufferUpdateAfterBind-03010", 13579 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingStorageTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>" 13580 }, 13581 { 13582 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-None-03011", 13583 "text": " All bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>" 13584 }, 13585 { 13586 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingUpdateUnusedWhilePending-03012", 13587 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingUpdateUnusedWhilePending</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT</code>" 13588 }, 13589 { 13590 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingPartiallyBound-03013", 13591 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingPartiallyBound</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT</code>" 13592 }, 13593 { 13594 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingVariableDescriptorCount-03014", 13595 "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeatures\">VkPhysicalDeviceDescriptorIndexingFeatures</a>::<code>descriptorBindingVariableDescriptorCount</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>" 13596 }, 13597 { 13598 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-03015", 13599 "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>, that element’s <code>descriptorType</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>" 13600 }, 13601 { 13602 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-sType-sType", 13603 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO</code>" 13604 }, 13605 { 13606 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-pBindingFlags-parameter", 13607 "text": " If <code>bindingCount</code> is not <code>0</code>, <code>pBindingFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid combinations of <a href=\"#VkDescriptorBindingFlagBits\">VkDescriptorBindingFlagBits</a> values" 13608 } 13609 ], 13610 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [ 13611 { 13612 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-flags-03003", 13613 "text": " If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> includes <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>, <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT</code>, or <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT</code>" 13614 } 13615 ], 13616 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [ 13617 { 13618 "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfo-descriptorBindingInlineUniformBlockUpdateAfterBind-02211", 13619 "text": " If <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>::<code>descriptorBindingInlineUniformBlockUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code>" 13620 } 13621 ] 13622 }, 13623 "vkGetDescriptorSetLayoutSupport": { 13624 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [ 13625 { 13626 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter", 13627 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 13628 }, 13629 { 13630 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter", 13631 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a> structure" 13632 }, 13633 { 13634 "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter", 13635 "text": " <code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorSetLayoutSupport\">VkDescriptorSetLayoutSupport</a> structure" 13636 } 13637 ] 13638 }, 13639 "VkDescriptorSetLayoutSupport": { 13640 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [ 13641 { 13642 "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType", 13643 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>" 13644 }, 13645 { 13646 "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext", 13647 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountLayoutSupport\">VkDescriptorSetVariableDescriptorCountLayoutSupport</a>" 13648 }, 13649 { 13650 "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-unique", 13651 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 13652 } 13653 ] 13654 }, 13655 "VkDescriptorSetVariableDescriptorCountLayoutSupport": { 13656 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 13657 { 13658 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupport-sType-sType", 13659 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT</code>" 13660 } 13661 ] 13662 }, 13663 "vkDestroyDescriptorSetLayout": { 13664 "core": [ 13665 { 13666 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284", 13667 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 13668 }, 13669 { 13670 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285", 13671 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 13672 }, 13673 { 13674 "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter", 13675 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 13676 }, 13677 { 13678 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter", 13679 "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handle" 13680 }, 13681 { 13682 "vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter", 13683 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 13684 }, 13685 { 13686 "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent", 13687 "text": " If <code>descriptorSetLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 13688 } 13689 ] 13690 }, 13691 "vkCreatePipelineLayout": { 13692 "core": [ 13693 { 13694 "vuid": "VUID-vkCreatePipelineLayout-device-parameter", 13695 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 13696 }, 13697 { 13698 "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter", 13699 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a> structure" 13700 }, 13701 { 13702 "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter", 13703 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 13704 }, 13705 { 13706 "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter", 13707 "text": " <code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 13708 } 13709 ] 13710 }, 13711 "VkPipelineLayoutCreateInfo": { 13712 "core": [ 13713 { 13714 "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286", 13715 "text": " <code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>" 13716 }, 13717 { 13718 "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292", 13719 "text": " Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>" 13720 }, 13721 { 13722 "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType", 13723 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>" 13724 }, 13725 { 13726 "vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext", 13727 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 13728 }, 13729 { 13730 "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask", 13731 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 13732 }, 13733 { 13734 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter", 13735 "text": " If <code>setLayoutCount</code> is not <code>0</code>, <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setLayoutCount</code> valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles" 13736 }, 13737 { 13738 "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter", 13739 "text": " If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <a href=\"#VkPushConstantRange\">VkPushConstantRange</a> structures" 13740 } 13741 ], 13742 "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 13743 { 13744 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287", 13745 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>" 13746 }, 13747 { 13748 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288", 13749 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>" 13750 }, 13751 { 13752 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289", 13753 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>" 13754 }, 13755 { 13756 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290", 13757 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>" 13758 }, 13759 { 13760 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291", 13761 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>" 13762 }, 13763 { 13764 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676", 13765 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>" 13766 }, 13767 { 13768 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677", 13769 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>" 13770 }, 13771 { 13772 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678", 13773 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>" 13774 }, 13775 { 13776 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679", 13777 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>" 13778 }, 13779 { 13780 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680", 13781 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>" 13782 }, 13783 { 13784 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681", 13785 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>" 13786 }, 13787 { 13788 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682", 13789 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>" 13790 }, 13791 { 13792 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683", 13793 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>" 13794 }, 13795 { 13796 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684", 13797 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>" 13798 } 13799 ], 13800 "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [ 13801 { 13802 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212", 13803 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>" 13804 }, 13805 { 13806 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213", 13807 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>" 13808 } 13809 ], 13810 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 13811 { 13812 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016", 13813 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>" 13814 }, 13815 { 13816 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017", 13817 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>" 13818 }, 13819 { 13820 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018", 13821 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>" 13822 }, 13823 { 13824 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019", 13825 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>" 13826 }, 13827 { 13828 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020", 13829 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>" 13830 }, 13831 { 13832 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021", 13833 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>" 13834 }, 13835 { 13836 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022", 13837 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindSamplers</code>" 13838 }, 13839 { 13840 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023", 13841 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindUniformBuffers</code>" 13842 }, 13843 { 13844 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024", 13845 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageBuffers</code>" 13846 }, 13847 { 13848 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025", 13849 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindSampledImages</code>" 13850 }, 13851 { 13852 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026", 13853 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageImages</code>" 13854 }, 13855 { 13856 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027", 13857 "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxPerStageDescriptorUpdateAfterBindInputAttachments</code>" 13858 }, 13859 { 13860 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028", 13861 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>" 13862 }, 13863 { 13864 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029", 13865 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>" 13866 }, 13867 { 13868 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030", 13869 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>" 13870 }, 13871 { 13872 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031", 13873 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>" 13874 }, 13875 { 13876 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032", 13877 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>" 13878 }, 13879 { 13880 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033", 13881 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>" 13882 }, 13883 { 13884 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034", 13885 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>" 13886 }, 13887 { 13888 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035", 13889 "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>" 13890 }, 13891 { 13892 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036", 13893 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindSamplers</code>" 13894 }, 13895 { 13896 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037", 13897 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffers</code>" 13898 }, 13899 { 13900 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038", 13901 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</code>" 13902 }, 13903 { 13904 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039", 13905 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffers</code>" 13906 }, 13907 { 13908 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040", 13909 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</code>" 13910 }, 13911 { 13912 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041", 13913 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindSampledImages</code>" 13914 }, 13915 { 13916 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042", 13917 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindStorageImages</code>" 13918 }, 13919 { 13920 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043", 13921 "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingProperties</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>" 13922 } 13923 ], 13924 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [ 13925 { 13926 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214", 13927 "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>" 13928 }, 13929 { 13930 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215", 13931 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks</code>" 13932 }, 13933 { 13934 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216", 13935 "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>" 13936 }, 13937 { 13938 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217", 13939 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInlineUniformBlocks</code>" 13940 } 13941 ], 13942 "(VK_KHR_push_descriptor)": [ 13943 { 13944 "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293", 13945 "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not contain more than one descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set" 13946 } 13947 ], 13948 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 13949 { 13950 "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381", 13951 "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxDescriptorSetAccelerationStructures</code>" 13952 } 13953 ], 13954 "(VK_EXT_fragment_density_map2)": [ 13955 { 13956 "vuid": "VUID-VkPipelineLayoutCreateInfo-pImmutableSamplers-03566", 13957 "text": " The total number of <code>pImmutableSamplers</code> created with <code>flags</code> containing <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code> or <code>VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT</code> across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#limits-maxDescriptorSetSubsampledSamplers\"><code>VkPhysicalDeviceFragmentDensityMap2PropertiesEXT</code>::<code>maxDescriptorSetSubsampledSamplers</code></a>" 13958 } 13959 ] 13960 }, 13961 "VkPushConstantRange": { 13962 "core": [ 13963 { 13964 "vuid": "VUID-VkPushConstantRange-offset-00294", 13965 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>" 13966 }, 13967 { 13968 "vuid": "VUID-VkPushConstantRange-offset-00295", 13969 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 13970 }, 13971 { 13972 "vuid": "VUID-VkPushConstantRange-size-00296", 13973 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 13974 }, 13975 { 13976 "vuid": "VUID-VkPushConstantRange-size-00297", 13977 "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 13978 }, 13979 { 13980 "vuid": "VUID-VkPushConstantRange-size-00298", 13981 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>" 13982 }, 13983 { 13984 "vuid": "VUID-VkPushConstantRange-stageFlags-parameter", 13985 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values" 13986 }, 13987 { 13988 "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask", 13989 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 13990 } 13991 ] 13992 }, 13993 "vkDestroyPipelineLayout": { 13994 "core": [ 13995 { 13996 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299", 13997 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 13998 }, 13999 { 14000 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300", 14001 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 14002 }, 14003 { 14004 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004", 14005 "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> not have been passed to any <code>vkCmd*</code> command for any command buffers that are still in the <a href=\"#commandbuffers-lifecycle\">recording state</a> when <code>vkDestroyPipelineLayout</code> is called" 14006 }, 14007 { 14008 "vuid": "VUID-vkDestroyPipelineLayout-device-parameter", 14009 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14010 }, 14011 { 14012 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter", 14013 "text": " If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 14014 }, 14015 { 14016 "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter", 14017 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 14018 }, 14019 { 14020 "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent", 14021 "text": " If <code>pipelineLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 14022 } 14023 ] 14024 }, 14025 "vkCreateDescriptorPool": { 14026 "core": [ 14027 { 14028 "vuid": "VUID-vkCreateDescriptorPool-device-parameter", 14029 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14030 }, 14031 { 14032 "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter", 14033 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorPoolCreateInfo\">VkDescriptorPoolCreateInfo</a> structure" 14034 }, 14035 { 14036 "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter", 14037 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 14038 }, 14039 { 14040 "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter", 14041 "text": " <code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle" 14042 } 14043 ] 14044 }, 14045 "VkDescriptorPoolCreateInfo": { 14046 "core": [ 14047 { 14048 "vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301", 14049 "text": " <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14050 }, 14051 { 14052 "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType", 14053 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>" 14054 }, 14055 { 14056 "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext", 14057 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorPoolInlineUniformBlockCreateInfoEXT\">VkDescriptorPoolInlineUniformBlockCreateInfoEXT</a>" 14058 }, 14059 { 14060 "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-unique", 14061 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 14062 }, 14063 { 14064 "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter", 14065 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values" 14066 }, 14067 { 14068 "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter", 14069 "text": " <code>pPoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>poolSizeCount</code> valid <a href=\"#VkDescriptorPoolSize\">VkDescriptorPoolSize</a> structures" 14070 }, 14071 { 14072 "vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength", 14073 "text": " <code>poolSizeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14074 } 14075 ] 14076 }, 14077 "VkDescriptorPoolInlineUniformBlockCreateInfoEXT": { 14078 "(VK_EXT_inline_uniform_block)": [ 14079 { 14080 "vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfoEXT-sType-sType", 14081 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT</code>" 14082 } 14083 ] 14084 }, 14085 "VkDescriptorPoolSize": { 14086 "core": [ 14087 { 14088 "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302", 14089 "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14090 }, 14091 { 14092 "vuid": "VUID-VkDescriptorPoolSize-type-parameter", 14093 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 14094 } 14095 ], 14096 "(VK_EXT_inline_uniform_block)": [ 14097 { 14098 "vuid": "VUID-VkDescriptorPoolSize-type-02218", 14099 "text": " If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 14100 } 14101 ] 14102 }, 14103 "vkDestroyDescriptorPool": { 14104 "core": [ 14105 { 14106 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303", 14107 "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution" 14108 }, 14109 { 14110 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304", 14111 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 14112 }, 14113 { 14114 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305", 14115 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 14116 }, 14117 { 14118 "vuid": "VUID-vkDestroyDescriptorPool-device-parameter", 14119 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14120 }, 14121 { 14122 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter", 14123 "text": " If <code>descriptorPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle" 14124 }, 14125 { 14126 "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter", 14127 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 14128 }, 14129 { 14130 "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent", 14131 "text": " If <code>descriptorPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 14132 } 14133 ] 14134 }, 14135 "vkAllocateDescriptorSets": { 14136 "core": [ 14137 { 14138 "vuid": "VUID-vkAllocateDescriptorSets-device-parameter", 14139 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14140 }, 14141 { 14142 "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter", 14143 "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a> structure" 14144 }, 14145 { 14146 "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter", 14147 "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo->descriptorSetCount</code> <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handles" 14148 }, 14149 { 14150 "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo::descriptorSetCount-arraylength", 14151 "text": " <code>pAllocateInfo->descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14152 } 14153 ] 14154 }, 14155 "VkDescriptorSetAllocateInfo": { 14156 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 14157 { 14158 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306", 14159 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> not be greater than the number of sets that are currently available for allocation in <code>descriptorPool</code>" 14160 }, 14161 { 14162 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307", 14163 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts" 14164 } 14165 ], 14166 "(VK_KHR_push_descriptor)": [ 14167 { 14168 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308", 14169 "text": " Each element of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set" 14170 } 14171 ], 14172 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 14173 { 14174 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044", 14175 "text": " If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</code> bit set, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set" 14176 } 14177 ], 14178 "core": [ 14179 { 14180 "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType", 14181 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>" 14182 }, 14183 { 14184 "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext", 14185 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfo\">VkDescriptorSetVariableDescriptorCountAllocateInfo</a>" 14186 }, 14187 { 14188 "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-unique", 14189 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 14190 }, 14191 { 14192 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter", 14193 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle" 14194 }, 14195 { 14196 "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter", 14197 "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <a href=\"#VkDescriptorSetLayout\">VkDescriptorSetLayout</a> handles" 14198 }, 14199 { 14200 "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength", 14201 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14202 }, 14203 { 14204 "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent", 14205 "text": " Both of <code>descriptorPool</code>, and the elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 14206 } 14207 ] 14208 }, 14209 "VkDescriptorSetVariableDescriptorCountAllocateInfo": { 14210 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 14211 { 14212 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-descriptorSetCount-03045", 14213 "text": " If <code>descriptorSetCount</code> is not zero, <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>descriptorSetCount</code>" 14214 }, 14215 { 14216 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pSetLayouts-03046", 14217 "text": " If <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>pSetLayouts</code>[i] has a variable descriptor count binding, then <code>pDescriptorCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to the descriptor count specified for that binding when the descriptor set layout was created" 14218 }, 14219 { 14220 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-sType-sType", 14221 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO</code>" 14222 }, 14223 { 14224 "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfo-pDescriptorCounts-parameter", 14225 "text": " If <code>descriptorSetCount</code> is not <code>0</code>, <code>pDescriptorCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>uint32_t</code> values" 14226 } 14227 ] 14228 }, 14229 "vkFreeDescriptorSets": { 14230 "core": [ 14231 { 14232 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309", 14233 "text": " All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution" 14234 }, 14235 { 14236 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310", 14237 "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>VkDescriptorSet</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 14238 }, 14239 { 14240 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311", 14241 "text": " Each valid handle in <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated from <code>descriptorPool</code>" 14242 }, 14243 { 14244 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312", 14245 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT</code> flag" 14246 }, 14247 { 14248 "vuid": "VUID-vkFreeDescriptorSets-device-parameter", 14249 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14250 }, 14251 { 14252 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter", 14253 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle" 14254 }, 14255 { 14256 "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength", 14257 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14258 }, 14259 { 14260 "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent", 14261 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 14262 }, 14263 { 14264 "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent", 14265 "text": " Each element of <code>pDescriptorSets</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>descriptorPool</code>" 14266 } 14267 ] 14268 }, 14269 "vkResetDescriptorPool": { 14270 "core": [ 14271 { 14272 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313", 14273 "text": " All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution" 14274 }, 14275 { 14276 "vuid": "VUID-vkResetDescriptorPool-device-parameter", 14277 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14278 }, 14279 { 14280 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter", 14281 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorPool\">VkDescriptorPool</a> handle" 14282 }, 14283 { 14284 "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask", 14285 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 14286 }, 14287 { 14288 "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent", 14289 "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 14290 } 14291 ] 14292 }, 14293 "vkUpdateDescriptorSets": { 14294 "!(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 14295 { 14296 "vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314", 14297 "text": " The <code>dstSet</code> member of each element of <code>pDescriptorWrites</code> or <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 14298 } 14299 ], 14300 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 14301 { 14302 "vuid": "VUID-vkUpdateDescriptorSets-None-03047", 14303 "text": " Descriptor bindings updated by this command which were created without the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT</code> or <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT</code> bits set <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>" 14304 } 14305 ], 14306 "core": [ 14307 { 14308 "vuid": "VUID-vkUpdateDescriptorSets-device-parameter", 14309 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14310 }, 14311 { 14312 "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter", 14313 "text": " If <code>descriptorWriteCount</code> is not <code>0</code>, <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <a href=\"#VkWriteDescriptorSet\">VkWriteDescriptorSet</a> structures" 14314 }, 14315 { 14316 "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter", 14317 "text": " If <code>descriptorCopyCount</code> is not <code>0</code>, <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCopyCount</code> valid <a href=\"#VkCopyDescriptorSet\">VkCopyDescriptorSet</a> structures" 14318 } 14319 ] 14320 }, 14321 "VkWriteDescriptorSet": { 14322 "core": [ 14323 { 14324 "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315", 14325 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum value of <code>binding</code> of all <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a> structures specified when <code>dstSet</code>’s descriptor set layout was created" 14326 }, 14327 { 14328 "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316", 14329 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>" 14330 }, 14331 { 14332 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317", 14333 "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <code>descriptorType</code> and <code>stageFlags</code>" 14334 }, 14335 { 14336 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318", 14337 "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> all either use immutable samplers or <strong class=\"purple\">must</strong> all not use immutable samplers" 14338 }, 14339 { 14340 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319", 14341 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>" 14342 }, 14343 { 14344 "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320", 14345 "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle" 14346 }, 14347 { 14348 "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321", 14349 "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 14350 }, 14351 { 14352 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322", 14353 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures" 14354 }, 14355 { 14356 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02994", 14357 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, each element of <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> be either a valid <code>VkBufferView</code> handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 14358 }, 14359 { 14360 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02995", 14361 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> and the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, each element of <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 14362 }, 14363 { 14364 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324", 14365 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorBufferInfo</code> structures" 14366 }, 14367 { 14368 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325", 14369 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was not allocated with a layout that included immutable samplers for <code>dstBinding</code> with <code>descriptorType</code>, the <code>sampler</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> object" 14370 }, 14371 { 14372 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02996", 14373 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be either a valid <code>VkImageView</code> handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 14374 }, 14375 { 14376 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02997", 14377 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> and the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 14378 }, 14379 { 14380 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327", 14381 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>" 14382 }, 14383 { 14384 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328", 14385 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>" 14386 }, 14387 { 14388 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329", 14389 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, and the <code>buffer</code> member of any element of <code>pBufferInfo</code> is the handle of a non-sparse buffer, then that buffer <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 14390 }, 14391 { 14392 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330", 14393 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT</code> set" 14394 }, 14395 { 14396 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331", 14397 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> set" 14398 }, 14399 { 14400 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332", 14401 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxUniformBufferRange</code>" 14402 }, 14403 { 14404 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333", 14405 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxStorageBufferRange</code>" 14406 }, 14407 { 14408 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334", 14409 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> set" 14410 }, 14411 { 14412 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335", 14413 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code> set" 14414 }, 14415 { 14416 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336", 14417 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle" 14418 }, 14419 { 14420 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337", 14421 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> set" 14422 }, 14423 { 14424 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04149", 14425 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-sampledimage\">Sampled Image</a>" 14426 }, 14427 { 14428 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04150", 14429 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-combinedimagesampler\">Combined Image Sampler</a>" 14430 }, 14431 { 14432 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04151", 14433 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-inputattachment\">Input Attachment</a>" 14434 }, 14435 { 14436 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04152", 14437 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-storageimage\">Storage Image</a>" 14438 }, 14439 { 14440 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-04153", 14441 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-storageimage\">Storage Image</a>" 14442 }, 14443 { 14444 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338", 14445 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set" 14446 }, 14447 { 14448 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339", 14449 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_STORAGE_BIT</code> set" 14450 }, 14451 { 14452 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02752", 14453 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, then <code>dstSet</code> <strong class=\"purple\">must</strong> not have been allocated with a layout that included immutable samplers for <code>dstBinding</code>" 14454 }, 14455 { 14456 "vuid": "VUID-VkWriteDescriptorSet-sType-sType", 14457 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>" 14458 }, 14459 { 14460 "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext", 14461 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkWriteDescriptorSetAccelerationStructureKHR\">VkWriteDescriptorSetAccelerationStructureKHR</a> or <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a>" 14462 }, 14463 { 14464 "vuid": "VUID-VkWriteDescriptorSet-sType-unique", 14465 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 14466 }, 14467 { 14468 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter", 14469 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 14470 }, 14471 { 14472 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength", 14473 "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14474 }, 14475 { 14476 "vuid": "VUID-VkWriteDescriptorSet-commonparent", 14477 "text": " Both of <code>dstSet</code>, and the elements of <code>pTexelBufferView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 14478 } 14479 ], 14480 "(VK_EXT_inline_uniform_block)": [ 14481 { 14482 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219", 14483 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 14484 }, 14485 { 14486 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220", 14487 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 14488 }, 14489 { 14490 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221", 14491 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a> structure whose <code>dataSize</code> member equals <code>descriptorCount</code>" 14492 } 14493 ], 14494 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 14495 { 14496 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382", 14497 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetAccelerationStructureKHR\">VkWriteDescriptorSetAccelerationStructureKHR</a> structure whose <code>accelerationStructureCount</code> member equals <code>descriptorCount</code>" 14498 } 14499 ], 14500 "(VK_VULKAN_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 14501 { 14502 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946", 14503 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, then the <code>imageView</code> member of each <code>pImageInfo</code> element <strong class=\"purple\">must</strong> have been created without a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain" 14504 }, 14505 { 14506 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02738", 14507 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and if any element of <code>pImageInfo</code> has a <code>imageView</code> member that was created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain, then <code>dstSet</code> <strong class=\"purple\">must</strong> have been allocated with a layout that included immutable samplers for <code>dstBinding</code>, and the corresponding immutable sampler <strong class=\"purple\">must</strong> have been created with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> object" 14508 }, 14509 { 14510 "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948", 14511 "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was allocated with a layout that included immutable samplers for <code>dstBinding</code>, then the <code>imageView</code> member of each element of <code>pImageInfo</code> which corresponds to an immutable sampler that enables <a href=\"#samplers-YCbCr-conversion\">sampler {YCbCr} conversion</a> <strong class=\"purple\">must</strong> have been created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> to the corresponding immutable sampler" 14512 } 14513 ], 14514 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 14515 { 14516 "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048", 14517 "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <a href=\"#VkDescriptorBindingFlagBits\">VkDescriptorBindingFlagBits</a>" 14518 } 14519 ] 14520 }, 14521 "VkDescriptorBufferInfo": { 14522 "core": [ 14523 { 14524 "vuid": "VUID-VkDescriptorBufferInfo-offset-00340", 14525 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 14526 }, 14527 { 14528 "vuid": "VUID-VkDescriptorBufferInfo-range-00341", 14529 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14530 }, 14531 { 14532 "vuid": "VUID-VkDescriptorBufferInfo-range-00342", 14533 "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code> minus <code>offset</code>" 14534 }, 14535 { 14536 "vuid": "VUID-VkDescriptorBufferInfo-buffer-02998", 14537 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, <code>buffer</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 14538 }, 14539 { 14540 "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter", 14541 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 14542 } 14543 ], 14544 "(VK_EXT_robustness2)": [ 14545 { 14546 "vuid": "VUID-VkDescriptorBufferInfo-buffer-02999", 14547 "text": " If <code>buffer</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>offset</code> <strong class=\"purple\">must</strong> be zero and <code>range</code> <strong class=\"purple\">must</strong> be <code>VK_WHOLE_SIZE</code>" 14548 } 14549 ] 14550 }, 14551 "VkDescriptorImageInfo": { 14552 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 14553 { 14554 "vuid": "VUID-VkDescriptorImageInfo-imageView-00343", 14555 "text": " <code>imageView</code> <strong class=\"purple\">must</strong> not be 2D or 2D array image view created from a 3D image" 14556 } 14557 ], 14558 "core": [ 14559 { 14560 "vuid": "VUID-VkDescriptorImageInfo-imageView-01976", 14561 "text": " If <code>imageView</code> is created from a depth/stencil image, the <code>aspectMask</code> used to create the <code>imageView</code> <strong class=\"purple\">must</strong> include either <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> but not both" 14562 }, 14563 { 14564 "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344", 14565 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time this descriptor is accessed as defined by the <a href=\"#resources-image-layouts-matching-rule\">image layout matching rules</a>" 14566 }, 14567 { 14568 "vuid": "VUID-VkDescriptorImageInfo-commonparent", 14569 "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 14570 } 14571 ], 14572 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 14573 { 14574 "vuid": "VUID-VkDescriptorImageInfo-sampler-01564", 14575 "text": " If <code>sampler</code> is used and the <a href=\"#VkFormat\">VkFormat</a> of the image is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, and the <code>aspectMask</code> of the <code>imageView</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or (for three-plane formats only) <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 14576 } 14577 ], 14578 "(VK_KHR_portability_subset)": [ 14579 { 14580 "vuid": "VUID-VkDescriptorImageInfo-mutableComparisonSamplers-04450", 14581 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>mutableComparisonSamplers</code> is <code>VK_FALSE</code>, then <code>sampler</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkSamplerCreateInfo\">VkSamplerCreateInfo</a>::<code>compareEnable</code> set to <code>VK_FALSE</code>." 14582 } 14583 ] 14584 }, 14585 "VkWriteDescriptorSetInlineUniformBlockEXT": { 14586 "(VK_EXT_inline_uniform_block)": [ 14587 { 14588 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222", 14589 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 14590 }, 14591 { 14592 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-sType-sType", 14593 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT</code>" 14594 }, 14595 { 14596 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter", 14597 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 14598 }, 14599 { 14600 "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength", 14601 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14602 } 14603 ] 14604 }, 14605 "VkWriteDescriptorSetAccelerationStructureKHR": { 14606 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 14607 { 14608 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-02236", 14609 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure" 14610 }, 14611 { 14612 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-02764", 14613 "text": " Each acceleration structure in <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created with <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR</code>" 14614 }, 14615 { 14616 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-sType-sType", 14617 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR</code>" 14618 }, 14619 { 14620 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-pAccelerationStructures-parameter", 14621 "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles" 14622 }, 14623 { 14624 "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureKHR-accelerationStructureCount-arraylength", 14625 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14626 } 14627 ] 14628 }, 14629 "VkCopyDescriptorSet": { 14630 "core": [ 14631 { 14632 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345", 14633 "text": " <code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>" 14634 }, 14635 { 14636 "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346", 14637 "text": " The sum of <code>srcArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>srcBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 14638 }, 14639 { 14640 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347", 14641 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>" 14642 }, 14643 { 14644 "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348", 14645 "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 14646 }, 14647 { 14648 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632", 14649 "text": " The type of <code>dstBinding</code> within <code>dstSet</code> <strong class=\"purple\">must</strong> be equal to the type of <code>srcBinding</code> within <code>srcSet</code>" 14650 }, 14651 { 14652 "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349", 14653 "text": " If <code>srcSet</code> is equal to <code>dstSet</code>, then the source and destination ranges of descriptors <strong class=\"purple\">must</strong> not overlap, where the ranges <strong class=\"purple\">may</strong> include array elements from consecutive bindings as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 14654 }, 14655 { 14656 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02753", 14657 "text": " If the descriptor type of the descriptor set binding specified by <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, then <code>dstSet</code> <strong class=\"purple\">must</strong> not have been allocated with a layout that included immutable samplers for <code>dstBinding</code>" 14658 }, 14659 { 14660 "vuid": "VUID-VkCopyDescriptorSet-sType-sType", 14661 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>" 14662 }, 14663 { 14664 "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext", 14665 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 14666 }, 14667 { 14668 "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter", 14669 "text": " <code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle" 14670 }, 14671 { 14672 "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter", 14673 "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle" 14674 }, 14675 { 14676 "vuid": "VUID-VkCopyDescriptorSet-commonparent", 14677 "text": " Both of <code>dstSet</code>, and <code>srcSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 14678 } 14679 ], 14680 "(VK_EXT_inline_uniform_block)": [ 14681 { 14682 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223", 14683 "text": " If the descriptor type of the descriptor set binding specified by <code>srcBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>srcArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 14684 }, 14685 { 14686 "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224", 14687 "text": " If the descriptor type of the descriptor set binding specified by <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 14688 }, 14689 { 14690 "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225", 14691 "text": " If the descriptor type of the descriptor set binding specified by either <code>srcBinding</code> or <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 14692 } 14693 ], 14694 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 14695 { 14696 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918", 14697 "text": " If <code>srcSet</code>’s layout was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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</code> flag set" 14698 }, 14699 { 14700 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01919", 14701 "text": " If <code>srcSet</code>’s layout was created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT</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</code> flag set" 14702 }, 14703 { 14704 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920", 14705 "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set" 14706 }, 14707 { 14708 "vuid": "VUID-VkCopyDescriptorSet-srcSet-01921", 14709 "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT</code> flag set" 14710 } 14711 ] 14712 }, 14713 "vkCreateDescriptorUpdateTemplate": { 14714 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 14715 { 14716 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter", 14717 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14718 }, 14719 { 14720 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter", 14721 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDescriptorUpdateTemplateCreateInfo\">VkDescriptorUpdateTemplateCreateInfo</a> structure" 14722 }, 14723 { 14724 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter", 14725 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 14726 }, 14727 { 14728 "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter", 14729 "text": " <code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle" 14730 } 14731 ] 14732 }, 14733 "VkDescriptorUpdateTemplateCreateInfo": { 14734 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 14735 { 14736 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350", 14737 "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET</code>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle" 14738 }, 14739 { 14740 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType", 14741 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>" 14742 }, 14743 { 14744 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext", 14745 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 14746 }, 14747 { 14748 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask", 14749 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 14750 }, 14751 { 14752 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter", 14753 "text": " <code>pDescriptorUpdateEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorUpdateEntryCount</code> valid <a href=\"#VkDescriptorUpdateTemplateEntry\">VkDescriptorUpdateTemplateEntry</a> structures" 14754 }, 14755 { 14756 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter", 14757 "text": " <code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value" 14758 }, 14759 { 14760 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength", 14761 "text": " <code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14762 }, 14763 { 14764 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent", 14765 "text": " Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 14766 } 14767 ], 14768 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [ 14769 { 14770 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351", 14771 "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 14772 }, 14773 { 14774 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352", 14775 "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle" 14776 }, 14777 { 14778 "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353", 14779 "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>" 14780 } 14781 ] 14782 }, 14783 "VkDescriptorUpdateTemplateEntry": { 14784 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 14785 { 14786 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354", 14787 "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors" 14788 }, 14789 { 14790 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355", 14791 "text": " <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>" 14792 }, 14793 { 14794 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter", 14795 "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value" 14796 } 14797 ], 14798 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_inline_uniform_block)": [ 14799 { 14800 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226", 14801 "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 14802 }, 14803 { 14804 "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227", 14805 "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>" 14806 } 14807 ] 14808 }, 14809 "vkDestroyDescriptorUpdateTemplate": { 14810 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 14811 { 14812 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356", 14813 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 14814 }, 14815 { 14816 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357", 14817 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 14818 }, 14819 { 14820 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter", 14821 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14822 }, 14823 { 14824 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter", 14825 "text": " If <code>descriptorUpdateTemplate</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle" 14826 }, 14827 { 14828 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter", 14829 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 14830 }, 14831 { 14832 "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent", 14833 "text": " If <code>descriptorUpdateTemplate</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 14834 } 14835 ] 14836 }, 14837 "vkUpdateDescriptorSetWithTemplate": { 14838 "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 14839 { 14840 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685", 14841 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>" 14842 }, 14843 { 14844 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter", 14845 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 14846 }, 14847 { 14848 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter", 14849 "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle" 14850 }, 14851 { 14852 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter", 14853 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle" 14854 }, 14855 { 14856 "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent", 14857 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 14858 } 14859 ] 14860 }, 14861 "vkCmdBindDescriptorSets": { 14862 "core": [ 14863 { 14864 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358", 14865 "text": " Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated with a <code>VkDescriptorSetLayout</code> that matches (is the same as, or identically defined as) the <code>VkDescriptorSetLayout</code> at set <em>n</em> in <code>layout</code>, where <em>n</em> is the sum of <code>firstSet</code> and the index into <code>pDescriptorSets</code>" 14866 }, 14867 { 14868 "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359", 14869 "text": " <code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>" 14870 }, 14871 { 14872 "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360", 14873 "text": " The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created" 14874 }, 14875 { 14876 "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361", 14877 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family" 14878 }, 14879 { 14880 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971", 14881 "text": " Each element of <code>pDynamicOffsets</code> which corresponds to a descriptor binding with type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>" 14882 }, 14883 { 14884 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972", 14885 "text": " Each element of <code>pDynamicOffsets</code> which corresponds to a descriptor binding with type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>" 14886 }, 14887 { 14888 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979", 14889 "text": " For each dynamic uniform or storage buffer binding in <code>pDescriptorSets</code>, the sum of the effective offset, as defined above, and the range of the binding <strong class=\"purple\">must</strong> be less than or equal to the size of the buffer" 14890 }, 14891 { 14892 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter", 14893 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 14894 }, 14895 { 14896 "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter", 14897 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 14898 }, 14899 { 14900 "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter", 14901 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 14902 }, 14903 { 14904 "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter", 14905 "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handles" 14906 }, 14907 { 14908 "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter", 14909 "text": " If <code>dynamicOffsetCount</code> is not <code>0</code>, <code>pDynamicOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicOffsetCount</code> <code>uint32_t</code> values" 14910 }, 14911 { 14912 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording", 14913 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 14914 }, 14915 { 14916 "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool", 14917 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 14918 }, 14919 { 14920 "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength", 14921 "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14922 }, 14923 { 14924 "vuid": "VUID-vkCmdBindDescriptorSets-commonparent", 14925 "text": " Each of <code>commandBuffer</code>, <code>layout</code>, and the elements of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 14926 } 14927 ] 14928 }, 14929 "vkCmdPushDescriptorSetKHR": { 14930 "(VK_KHR_push_descriptor)": [ 14931 { 14932 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363", 14933 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family" 14934 }, 14935 { 14936 "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364", 14937 "text": " <code>set</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPipelineLayoutCreateInfo\">VkPipelineLayoutCreateInfo</a>::<code>setLayoutCount</code> provided when <code>layout</code> was created" 14938 }, 14939 { 14940 "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365", 14941 "text": " <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>" 14942 }, 14943 { 14944 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter", 14945 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 14946 }, 14947 { 14948 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter", 14949 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 14950 }, 14951 { 14952 "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter", 14953 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 14954 }, 14955 { 14956 "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter", 14957 "text": " <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <a href=\"#VkWriteDescriptorSet\">VkWriteDescriptorSet</a> structures" 14958 }, 14959 { 14960 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording", 14961 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 14962 }, 14963 { 14964 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool", 14965 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 14966 }, 14967 { 14968 "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength", 14969 "text": " <code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 14970 }, 14971 { 14972 "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent", 14973 "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 14974 } 14975 ] 14976 }, 14977 "vkCmdPushDescriptorSetWithTemplateKHR": { 14978 "(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [ 14979 { 14980 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366", 14981 "text": " The <code>pipelineBindPoint</code> specified during the creation of the descriptor update template <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>’s parent <code>VkCommandPool</code>’s queue family" 14982 }, 14983 { 14984 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686", 14985 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory containing one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplateKHR\">vkCreateDescriptorUpdateTemplateKHR</a>" 14986 }, 14987 { 14988 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter", 14989 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 14990 }, 14991 { 14992 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter", 14993 "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplate\">VkDescriptorUpdateTemplate</a> handle" 14994 }, 14995 { 14996 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter", 14997 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 14998 }, 14999 { 15000 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording", 15001 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 15002 }, 15003 { 15004 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool", 15005 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 15006 }, 15007 { 15008 "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent", 15009 "text": " Each of <code>commandBuffer</code>, <code>descriptorUpdateTemplate</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 15010 } 15011 ] 15012 }, 15013 "vkCmdPushConstants": { 15014 "core": [ 15015 { 15016 "vuid": "VUID-vkCmdPushConstants-offset-01795", 15017 "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each shader stage in <code>stageFlags</code>, there <strong class=\"purple\">must</strong> be a push constant range in <code>layout</code> that includes that byte and that stage" 15018 }, 15019 { 15020 "vuid": "VUID-vkCmdPushConstants-offset-01796", 15021 "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each push constant range that overlaps that byte, <code>stageFlags</code> <strong class=\"purple\">must</strong> include all stages in that push constant range’s <a href=\"#VkPushConstantRange\">VkPushConstantRange</a>::<code>stageFlags</code>" 15022 }, 15023 { 15024 "vuid": "VUID-vkCmdPushConstants-offset-00368", 15025 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15026 }, 15027 { 15028 "vuid": "VUID-vkCmdPushConstants-size-00369", 15029 "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 15030 }, 15031 { 15032 "vuid": "VUID-vkCmdPushConstants-offset-00370", 15033 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>" 15034 }, 15035 { 15036 "vuid": "VUID-vkCmdPushConstants-size-00371", 15037 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>" 15038 }, 15039 { 15040 "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter", 15041 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 15042 }, 15043 { 15044 "vuid": "VUID-vkCmdPushConstants-layout-parameter", 15045 "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 15046 }, 15047 { 15048 "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter", 15049 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values" 15050 }, 15051 { 15052 "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask", 15053 "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 15054 }, 15055 { 15056 "vuid": "VUID-vkCmdPushConstants-pValues-parameter", 15057 "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes" 15058 }, 15059 { 15060 "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording", 15061 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 15062 }, 15063 { 15064 "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool", 15065 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 15066 }, 15067 { 15068 "vuid": "VUID-vkCmdPushConstants-size-arraylength", 15069 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 15070 }, 15071 { 15072 "vuid": "VUID-vkCmdPushConstants-commonparent", 15073 "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 15074 } 15075 ] 15076 }, 15077 "vkGetBufferDeviceAddress": { 15078 "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [ 15079 { 15080 "vuid": "VUID-vkGetBufferDeviceAddress-bufferDeviceAddress-03324", 15081 "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> or <a href=\"#features-bufferDeviceAddressEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddress</code></a> feature <strong class=\"purple\">must</strong> be enabled" 15082 }, 15083 { 15084 "vuid": "VUID-vkGetBufferDeviceAddress-device-03325", 15085 "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> or <a href=\"#features-bufferDeviceAddressMultiDeviceEXT\"><code>VkPhysicalDeviceBufferDeviceAddressFeaturesEXT</code>::<code>bufferDeviceAddressMultiDevice</code></a> feature <strong class=\"purple\">must</strong> be enabled" 15086 }, 15087 { 15088 "vuid": "VUID-vkGetBufferDeviceAddress-device-parameter", 15089 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 15090 }, 15091 { 15092 "vuid": "VUID-vkGetBufferDeviceAddress-pInfo-parameter", 15093 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferDeviceAddressInfo\">VkBufferDeviceAddressInfo</a> structure" 15094 } 15095 ] 15096 }, 15097 "VkBufferDeviceAddressInfo": { 15098 "(VK_VERSION_1_2,VK_EXT_buffer_device_address,VK_KHR_buffer_device_address)": [ 15099 { 15100 "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02600", 15101 "text": " If <code>buffer</code> is non-sparse and was not created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT</code> flag, then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 15102 }, 15103 { 15104 "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-02601", 15105 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT</code>" 15106 }, 15107 { 15108 "vuid": "VUID-VkBufferDeviceAddressInfo-sType-sType", 15109 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO</code>" 15110 }, 15111 { 15112 "vuid": "VUID-VkBufferDeviceAddressInfo-pNext-pNext", 15113 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 15114 }, 15115 { 15116 "vuid": "VUID-VkBufferDeviceAddressInfo-buffer-parameter", 15117 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 15118 } 15119 ] 15120 }, 15121 "vkGetBufferOpaqueCaptureAddress": { 15122 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 15123 { 15124 "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-None-03326", 15125 "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled" 15126 }, 15127 { 15128 "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-03327", 15129 "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled" 15130 }, 15131 { 15132 "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-device-parameter", 15133 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 15134 }, 15135 { 15136 "vuid": "VUID-vkGetBufferOpaqueCaptureAddress-pInfo-parameter", 15137 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBufferDeviceAddressInfo\">VkBufferDeviceAddressInfo</a> structure" 15138 } 15139 ] 15140 }, 15141 "BaryCoordNV": { 15142 "(VK_NV_fragment_shader_barycentric)": [ 15143 { 15144 "vuid": "VUID-BaryCoordNV-BaryCoordNV-04154", 15145 "text": " The <code>BaryCoordNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15146 }, 15147 { 15148 "vuid": "VUID-BaryCoordNV-BaryCoordNV-04155", 15149 "text": " The variable decorated with <code>BaryCoordNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15150 }, 15151 { 15152 "vuid": "VUID-BaryCoordNV-BaryCoordNV-04156", 15153 "text": " The variable decorated with <code>BaryCoordNV</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 15154 } 15155 ] 15156 }, 15157 "BaryCoordNoPerspAMD": { 15158 "(VK_AMD_shader_explicit_vertex_parameter)": [ 15159 { 15160 "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04157", 15161 "text": " The <code>BaryCoordNoPerspAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15162 }, 15163 { 15164 "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04158", 15165 "text": " The variable decorated with <code>BaryCoordNoPerspAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15166 }, 15167 { 15168 "vuid": "VUID-BaryCoordNoPerspAMD-BaryCoordNoPerspAMD-04159", 15169 "text": " The variable decorated with <code>BaryCoordNoPerspAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values" 15170 } 15171 ] 15172 }, 15173 "BaryCoordNoPerspNV": { 15174 "(VK_NV_fragment_shader_barycentric)": [ 15175 { 15176 "vuid": "VUID-BaryCoordNoPerspNV-BaryCoordNoPerspNV-04160", 15177 "text": " The <code>BaryCoordNoPerspNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15178 }, 15179 { 15180 "vuid": "VUID-BaryCoordNoPerspNV-BaryCoordNoPerspNV-04161", 15181 "text": " The variable decorated with <code>BaryCoordNoPerspNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15182 }, 15183 { 15184 "vuid": "VUID-BaryCoordNoPerspNV-BaryCoordNoPerspNV-04162", 15185 "text": " The variable decorated with <code>BaryCoordNoPerspNV</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 15186 } 15187 ] 15188 }, 15189 "BaryCoordNoPerspCentroidAMD": { 15190 "(VK_AMD_shader_explicit_vertex_parameter)": [ 15191 { 15192 "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04163", 15193 "text": " The <code>BaryCoordNoPerspCentroidAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15194 }, 15195 { 15196 "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04164", 15197 "text": " The variable decorated with <code>BaryCoordNoPerspCentroidAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15198 }, 15199 { 15200 "vuid": "VUID-BaryCoordNoPerspCentroidAMD-BaryCoordNoPerspCentroidAMD-04165", 15201 "text": " The variable decorated with <code>BaryCoordNoPerspCentroidAMD</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 15202 } 15203 ] 15204 }, 15205 "BaryCoordNoPerspSampleAMD": { 15206 "(VK_AMD_shader_explicit_vertex_parameter)": [ 15207 { 15208 "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04166", 15209 "text": " The <code>BaryCoordNoPerspSampleAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15210 }, 15211 { 15212 "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04167", 15213 "text": " The variable decorated with <code>BaryCoordNoPerspSampleAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15214 }, 15215 { 15216 "vuid": "VUID-BaryCoordNoPerspSampleAMD-BaryCoordNoPerspSampleAMD-04168", 15217 "text": " The variable decorated with <code>BaryCoordNoPerspSampleAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values" 15218 } 15219 ] 15220 }, 15221 "BaryCoordPullModelAMD": { 15222 "(VK_AMD_shader_explicit_vertex_parameter)": [ 15223 { 15224 "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04169", 15225 "text": " The <code>BaryCoordPullModelAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15226 }, 15227 { 15228 "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04170", 15229 "text": " The variable decorated with <code>BaryCoordPullModelAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15230 }, 15231 { 15232 "vuid": "VUID-BaryCoordPullModelAMD-BaryCoordPullModelAMD-04171", 15233 "text": " The variable decorated with <code>BaryCoordPullModelAMD</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 15234 } 15235 ] 15236 }, 15237 "BaryCoordSmoothAMD": { 15238 "(VK_AMD_shader_explicit_vertex_parameter)": [ 15239 { 15240 "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04172", 15241 "text": " The <code>BaryCoordSmoothAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15242 }, 15243 { 15244 "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04173", 15245 "text": " The variable decorated with <code>BaryCoordSmoothAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15246 }, 15247 { 15248 "vuid": "VUID-BaryCoordSmoothAMD-BaryCoordSmoothAMD-04174", 15249 "text": " The variable decorated with <code>BaryCoordSmoothAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values" 15250 } 15251 ] 15252 }, 15253 "BaryCoordSmoothCentroidAMD": { 15254 "(VK_AMD_shader_explicit_vertex_parameter)": [ 15255 { 15256 "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04175", 15257 "text": " The <code>BaryCoordSmoothCentroidAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15258 }, 15259 { 15260 "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04176", 15261 "text": " The variable decorated with <code>BaryCoordSmoothCentroidAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15262 }, 15263 { 15264 "vuid": "VUID-BaryCoordSmoothCentroidAMD-BaryCoordSmoothCentroidAMD-04177", 15265 "text": " The variable decorated with <code>BaryCoordSmoothCentroidAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values" 15266 } 15267 ] 15268 }, 15269 "BaryCoordSmoothSampleAMD": { 15270 "(VK_AMD_shader_explicit_vertex_parameter)": [ 15271 { 15272 "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04178", 15273 "text": " The <code>BaryCoordSmoothSampleAMD</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15274 }, 15275 { 15276 "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04179", 15277 "text": " The variable decorated with <code>BaryCoordSmoothSampleAMD</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15278 }, 15279 { 15280 "vuid": "VUID-BaryCoordSmoothSampleAMD-BaryCoordSmoothSampleAMD-04180", 15281 "text": " The variable decorated with <code>BaryCoordSmoothSampleAMD</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values" 15282 } 15283 ] 15284 }, 15285 "BaseInstance": { 15286 "(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [ 15287 { 15288 "vuid": "VUID-BaseInstance-BaseInstance-04181", 15289 "text": " The <code>BaseInstance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> {ExecutionModel}" 15290 }, 15291 { 15292 "vuid": "VUID-BaseInstance-BaseInstance-04182", 15293 "text": " The variable decorated with <code>BaseInstance</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15294 }, 15295 { 15296 "vuid": "VUID-BaseInstance-BaseInstance-04183", 15297 "text": " The variable decorated with <code>BaseInstance</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15298 } 15299 ] 15300 }, 15301 "BaseVertex": { 15302 "(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [ 15303 { 15304 "vuid": "VUID-BaseVertex-BaseVertex-04184", 15305 "text": " The <code>BaseVertex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> {ExecutionModel}" 15306 }, 15307 { 15308 "vuid": "VUID-BaseVertex-BaseVertex-04185", 15309 "text": " The variable decorated with <code>BaseVertex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15310 }, 15311 { 15312 "vuid": "VUID-BaseVertex-BaseVertex-04186", 15313 "text": " The variable decorated with <code>BaseVertex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15314 } 15315 ] 15316 }, 15317 "ClipDistance": { 15318 "core": [ 15319 { 15320 "vuid": "VUID-ClipDistance-ClipDistance-04187", 15321 "text": " The <code>ClipDistance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>Fragment</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}" 15322 }, 15323 { 15324 "vuid": "VUID-ClipDistance-ClipDistance-04188", 15325 "text": " The variable decorated with <code>ClipDistance</code> within the <code>MeshNV</code> or <code>Vertex</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15326 }, 15327 { 15328 "vuid": "VUID-ClipDistance-ClipDistance-04189", 15329 "text": " The variable decorated with <code>ClipDistance</code> within the <code>Fragment</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15330 }, 15331 { 15332 "vuid": "VUID-ClipDistance-ClipDistance-04190", 15333 "text": " The variable decorated with <code>ClipDistance</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared in a {StorageClass} other than <code>Input</code> or <code>Output</code>" 15334 }, 15335 { 15336 "vuid": "VUID-ClipDistance-ClipDistance-04191", 15337 "text": " The variable decorated with <code>ClipDistance</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit floating-point values" 15338 } 15339 ] 15340 }, 15341 "ClipDistancePerViewNV": { 15342 "(VK_NV_mesh_shader)": [ 15343 { 15344 "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04192", 15345 "text": " The <code>ClipDistancePerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}" 15346 }, 15347 { 15348 "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04193", 15349 "text": " The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15350 }, 15351 { 15352 "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04194", 15353 "text": " The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration." 15354 }, 15355 { 15356 "vuid": "VUID-ClipDistancePerViewNV-ClipDistancePerViewNV-04195", 15357 "text": " The variable decorated with <code>ClipDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared as a two-dimensional array of 32-bit floating-point values" 15358 } 15359 ] 15360 }, 15361 "CullDistance": { 15362 "core": [ 15363 { 15364 "vuid": "VUID-CullDistance-CullDistance-04196", 15365 "text": " The <code>CullDistance</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>Fragment</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}" 15366 }, 15367 { 15368 "vuid": "VUID-CullDistance-CullDistance-04197", 15369 "text": " The variable decorated with <code>CullDistance</code> within the <code>MeshNV</code> or <code>Vertex</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15370 }, 15371 { 15372 "vuid": "VUID-CullDistance-CullDistance-04198", 15373 "text": " The variable decorated with <code>CullDistance</code> within the <code>Fragment</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15374 }, 15375 { 15376 "vuid": "VUID-CullDistance-CullDistance-04199", 15377 "text": " The variable decorated with <code>CullDistance</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared using a {StorageClass} other than <code>Input</code> or <code>Output</code>" 15378 }, 15379 { 15380 "vuid": "VUID-CullDistance-CullDistance-04200", 15381 "text": " The variable decorated with <code>CullDistance</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit floating-point values" 15382 } 15383 ] 15384 }, 15385 "CullDistancePerViewNV": { 15386 "(VK_NV_mesh_shader)": [ 15387 { 15388 "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04201", 15389 "text": " The <code>CullDistancePerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}" 15390 }, 15391 { 15392 "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04202", 15393 "text": " The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15394 }, 15395 { 15396 "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04203", 15397 "text": " The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration." 15398 }, 15399 { 15400 "vuid": "VUID-CullDistancePerViewNV-CullDistancePerViewNV-04204", 15401 "text": " The variable decorated with <code>CullDistancePerViewNV</code> <strong class=\"purple\">must</strong> be declared as a two-dimensional array of 32-bit floating-point values" 15402 } 15403 ] 15404 }, 15405 "DeviceIndex": { 15406 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 15407 { 15408 "vuid": "VUID-DeviceIndex-DeviceIndex-04205", 15409 "text": " The variable decorated with <code>DeviceIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15410 }, 15411 { 15412 "vuid": "VUID-DeviceIndex-DeviceIndex-04206", 15413 "text": " The variable decorated with <code>DeviceIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15414 } 15415 ] 15416 }, 15417 "DrawIndex": { 15418 "(VK_VERSION_1_1,VK_KHR_shader_draw_parameters)": [ 15419 { 15420 "vuid": "VUID-DrawIndex-DrawIndex-04207", 15421 "text": " The <code>DrawIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}" 15422 }, 15423 { 15424 "vuid": "VUID-DrawIndex-DrawIndex-04208", 15425 "text": " The variable decorated with <code>DrawIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15426 }, 15427 { 15428 "vuid": "VUID-DrawIndex-DrawIndex-04209", 15429 "text": " The variable decorated with <code>DrawIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15430 } 15431 ] 15432 }, 15433 "FragCoord": { 15434 "core": [ 15435 { 15436 "vuid": "VUID-FragCoord-FragCoord-04210", 15437 "text": " The <code>FragCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15438 }, 15439 { 15440 "vuid": "VUID-FragCoord-FragCoord-04211", 15441 "text": " The variable decorated with <code>FragCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15442 }, 15443 { 15444 "vuid": "VUID-FragCoord-FragCoord-04212", 15445 "text": " The variable decorated with <code>FragCoord</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit floating-point values" 15446 } 15447 ] 15448 }, 15449 "FragDepth": { 15450 "core": [ 15451 { 15452 "vuid": "VUID-FragDepth-FragDepth-04213", 15453 "text": " The <code>FragDepth</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15454 }, 15455 { 15456 "vuid": "VUID-FragDepth-FragDepth-04214", 15457 "text": " The variable decorated with <code>FragDepth</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15458 }, 15459 { 15460 "vuid": "VUID-FragDepth-FragDepth-04215", 15461 "text": " The variable decorated with <code>FragDepth</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value" 15462 }, 15463 { 15464 "vuid": "VUID-FragDepth-FragDepth-04216", 15465 "text": " If the shader dynamically writes to the variable decorated with <code>FragDepth</code>, the <code>DepthReplacing</code> {ExecutionMode} <strong class=\"purple\">must</strong> be declared" 15466 } 15467 ] 15468 }, 15469 "FragInvocationCountEXT": { 15470 "(VK_EXT_fragment_density_map)": [ 15471 { 15472 "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04217", 15473 "text": " The <code>FragInvocationCountEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15474 }, 15475 { 15476 "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04218", 15477 "text": " The variable decorated with <code>FragInvocationCountEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15478 }, 15479 { 15480 "vuid": "VUID-FragInvocationCountEXT-FragInvocationCountEXT-04219", 15481 "text": " The variable decorated with <code>FragInvocationCountEXT</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15482 } 15483 ] 15484 }, 15485 "FragSizeEXT": { 15486 "(VK_EXT_fragment_density_map)": [ 15487 { 15488 "vuid": "VUID-FragSizeEXT-FragSizeEXT-04220", 15489 "text": " The <code>FragSizeEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15490 }, 15491 { 15492 "vuid": "VUID-FragSizeEXT-FragSizeEXT-04221", 15493 "text": " The variable decorated with <code>FragSizeEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15494 }, 15495 { 15496 "vuid": "VUID-FragSizeEXT-FragSizeEXT-04222", 15497 "text": " The variable decorated with <code>FragSizeEXT</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit integer values" 15498 } 15499 ] 15500 }, 15501 "FragStencilRefEXT": { 15502 "(VK_EXT_shader_stencil_export)": [ 15503 { 15504 "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04223", 15505 "text": " The <code>FragStencilRefEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15506 }, 15507 { 15508 "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04224", 15509 "text": " The variable decorated with <code>FragStencilRefEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15510 }, 15511 { 15512 "vuid": "VUID-FragStencilRefEXT-FragStencilRefEXT-04225", 15513 "text": " The variable decorated with <code>FragStencilRefEXT</code> <strong class=\"purple\">must</strong> be declared as a scalar integer value" 15514 } 15515 ] 15516 }, 15517 "FragmentSizeNV": { 15518 "(VK_NV_shading_rate_image)": [ 15519 { 15520 "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04226", 15521 "text": " The <code>FragmentSizeNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15522 }, 15523 { 15524 "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04227", 15525 "text": " The variable decorated with <code>FragmentSizeNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15526 }, 15527 { 15528 "vuid": "VUID-FragmentSizeNV-FragmentSizeNV-04228", 15529 "text": " The variable decorated with <code>FragmentSizeNV</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit integer values" 15530 } 15531 ] 15532 }, 15533 "FrontFacing": { 15534 "core": [ 15535 { 15536 "vuid": "VUID-FrontFacing-FrontFacing-04229", 15537 "text": " The <code>FrontFacing</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15538 }, 15539 { 15540 "vuid": "VUID-FrontFacing-FrontFacing-04230", 15541 "text": " The variable decorated with <code>FrontFacing</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15542 }, 15543 { 15544 "vuid": "VUID-FrontFacing-FrontFacing-04231", 15545 "text": " The variable decorated with <code>FrontFacing</code> <strong class=\"purple\">must</strong> be declared as a boolean value" 15546 } 15547 ] 15548 }, 15549 "FullyCoveredEXT": { 15550 "(VK_EXT_conservative_rasterization)": [ 15551 { 15552 "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04232", 15553 "text": " The <code>FullyCoveredEXT</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15554 }, 15555 { 15556 "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04233", 15557 "text": " The variable decorated with <code>FullyCoveredEXT</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15558 }, 15559 { 15560 "vuid": "VUID-FullyCoveredEXT-FullyCoveredEXT-04234", 15561 "text": " The variable decorated with <code>FullyCoveredEXT</code> <strong class=\"purple\">must</strong> be declared as a boolean value" 15562 } 15563 ], 15564 "(VK_EXT_conservative_rasterization)+(VK_EXT_post_depth_coverage)": [ 15565 { 15566 "vuid": "VUID-FullyCoveredEXT-conservativeRasterizationPostDepthCoverage-04235", 15567 "text": " If <code>VkPhysicalDeviceConservativeRasterizationPropertiesEXT</code>::<code>conservativeRasterizationPostDepthCoverage</code> is not supported the <code>PostDepthCoverage</code> {ExecutionMode} <strong class=\"purple\">must</strong> not be declared, when a variable with the <code>FullyCoveredEXT</code> decoration is declared" 15568 } 15569 ] 15570 }, 15571 "GlobalInvocationId": { 15572 "core": [ 15573 { 15574 "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04236", 15575 "text": " The <code>GlobalInvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}" 15576 }, 15577 { 15578 "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04237", 15579 "text": " The variable decorated with <code>GlobalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15580 }, 15581 { 15582 "vuid": "VUID-GlobalInvocationId-GlobalInvocationId-04238", 15583 "text": " The variable decorated with <code>GlobalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values" 15584 } 15585 ] 15586 }, 15587 "HelperInvocation": { 15588 "core": [ 15589 { 15590 "vuid": "VUID-HelperInvocation-HelperInvocation-04239", 15591 "text": " The <code>HelperInvocation</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15592 }, 15593 { 15594 "vuid": "VUID-HelperInvocation-HelperInvocation-04240", 15595 "text": " The variable decorated with <code>HelperInvocation</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15596 }, 15597 { 15598 "vuid": "VUID-HelperInvocation-HelperInvocation-04241", 15599 "text": " The variable decorated with <code>HelperInvocation</code> <strong class=\"purple\">must</strong> be declared as a boolean value" 15600 } 15601 ] 15602 }, 15603 "HitKindKHR": { 15604 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15605 { 15606 "vuid": "VUID-HitKindKHR-HitKindKHR-04242", 15607 "text": " The <code>HitKindKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>AnyHitKHR</code> or <code>ClosestHitKHR</code> {ExecutionModel}" 15608 }, 15609 { 15610 "vuid": "VUID-HitKindKHR-HitKindKHR-04243", 15611 "text": " The variable decorated with <code>HitKindKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15612 }, 15613 { 15614 "vuid": "VUID-HitKindKHR-HitKindKHR-04244", 15615 "text": " The variable decorated with <code>HitKindKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15616 } 15617 ] 15618 }, 15619 "HitTNV": { 15620 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 15621 { 15622 "vuid": "VUID-HitTNV-HitTNV-04245", 15623 "text": " The <code>HitTNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>AnyHitNV</code> or <code>ClosestHitNV</code> {ExecutionModel}" 15624 }, 15625 { 15626 "vuid": "VUID-HitTNV-HitTNV-04246", 15627 "text": " The variable decorated with <code>HitTNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15628 }, 15629 { 15630 "vuid": "VUID-HitTNV-HitTNV-04247", 15631 "text": " The variable decorated with <code>HitTNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value" 15632 } 15633 ] 15634 }, 15635 "IncomingRayFlagsKHR": { 15636 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15637 { 15638 "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04248", 15639 "text": " The <code>IncomingRayFlagsKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}" 15640 }, 15641 { 15642 "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04249", 15643 "text": " The variable decorated with <code>IncomingRayFlagsKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15644 }, 15645 { 15646 "vuid": "VUID-IncomingRayFlagsKHR-IncomingRayFlagsKHR-04250", 15647 "text": " The variable decorated with <code>IncomingRayFlagsKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15648 } 15649 ] 15650 }, 15651 "InstanceCustomIndexKHR": { 15652 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15653 { 15654 "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04251", 15655 "text": " The <code>InstanceCustomIndexKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}" 15656 }, 15657 { 15658 "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04252", 15659 "text": " The variable decorated with <code>InstanceCustomIndexKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15660 }, 15661 { 15662 "vuid": "VUID-InstanceCustomIndexKHR-InstanceCustomIndexKHR-04253", 15663 "text": " The variable decorated with <code>InstanceCustomIndexKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15664 } 15665 ] 15666 }, 15667 "InstanceId": { 15668 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15669 { 15670 "vuid": "VUID-InstanceId-InstanceId-04254", 15671 "text": " The <code>InstanceId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}" 15672 }, 15673 { 15674 "vuid": "VUID-InstanceId-InstanceId-04255", 15675 "text": " The variable decorated with <code>InstanceId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15676 }, 15677 { 15678 "vuid": "VUID-InstanceId-InstanceId-04256", 15679 "text": " The variable decorated with <code>InstanceId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15680 } 15681 ] 15682 }, 15683 "InvocationId": { 15684 "core": [ 15685 { 15686 "vuid": "VUID-InvocationId-InvocationId-04257", 15687 "text": " The <code>InvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>Geometry</code> {ExecutionModel}" 15688 }, 15689 { 15690 "vuid": "VUID-InvocationId-InvocationId-04258", 15691 "text": " The variable decorated with <code>InvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15692 }, 15693 { 15694 "vuid": "VUID-InvocationId-InvocationId-04259", 15695 "text": " The variable decorated with <code>InvocationId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15696 } 15697 ] 15698 }, 15699 "InvocationsPerPixelNV": { 15700 "(VK_NV_shading_rate_image)": [ 15701 { 15702 "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04260", 15703 "text": " The <code>InvocationsPerPixelNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15704 }, 15705 { 15706 "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04261", 15707 "text": " The variable decorated with <code>InvocationsPerPixelNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15708 }, 15709 { 15710 "vuid": "VUID-InvocationsPerPixelNV-InvocationsPerPixelNV-04262", 15711 "text": " The variable decorated with <code>InvocationsPerPixelNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15712 } 15713 ] 15714 }, 15715 "InstanceIndex": { 15716 "core": [ 15717 { 15718 "vuid": "VUID-InstanceIndex-InstanceIndex-04263", 15719 "text": " The <code>InstanceIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> {ExecutionModel}" 15720 }, 15721 { 15722 "vuid": "VUID-InstanceIndex-InstanceIndex-04264", 15723 "text": " The variable decorated with <code>InstanceIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15724 }, 15725 { 15726 "vuid": "VUID-InstanceIndex-InstanceIndex-04265", 15727 "text": " The variable decorated with <code>InstanceIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15728 } 15729 ] 15730 }, 15731 "LaunchIDKHR": { 15732 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15733 { 15734 "vuid": "VUID-LaunchIDKHR-LaunchIDKHR-04266", 15735 "text": " The <code>LaunchIDKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>RayGenerationKHR</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}" 15736 }, 15737 { 15738 "vuid": "VUID-LaunchIDKHR-LaunchIDKHR-04267", 15739 "text": " The variable decorated with <code>LaunchIDKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15740 }, 15741 { 15742 "vuid": "VUID-LaunchIDKHR-LaunchIDKHR-04268", 15743 "text": " The variable decorated with <code>LaunchIDKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values" 15744 } 15745 ] 15746 }, 15747 "LaunchSizeKHR": { 15748 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15749 { 15750 "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04269", 15751 "text": " The <code>LaunchSizeKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>RayGenerationKHR</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}" 15752 }, 15753 { 15754 "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04270", 15755 "text": " The variable decorated with <code>LaunchSizeKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15756 }, 15757 { 15758 "vuid": "VUID-LaunchSizeKHR-LaunchSizeKHR-04271", 15759 "text": " The variable decorated with <code>LaunchSizeKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values" 15760 } 15761 ] 15762 }, 15763 "Layer": { 15764 "core": [ 15765 { 15766 "vuid": "VUID-Layer-Layer-04272", 15767 "text": " The <code>Layer</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> {ExecutionModel}" 15768 }, 15769 { 15770 "vuid": "VUID-Layer-Layer-04274", 15771 "text": " The variable decorated with <code>Layer</code> within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15772 }, 15773 { 15774 "vuid": "VUID-Layer-Layer-04275", 15775 "text": " The variable decorated with <code>Layer</code> within the <code>Fragment</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15776 }, 15777 { 15778 "vuid": "VUID-Layer-Layer-04276", 15779 "text": " The variable decorated with <code>Layer</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15780 } 15781 ], 15782 "(VK_VERSION_1_2)": [ 15783 { 15784 "vuid": "VUID-Layer-Layer-04273", 15785 "text": " If the <a href=\"#features-shaderOutputLayer\">shaderOutputLayer</a> feature is not enabled then the <code>Layer</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Geometry</code> or <code>Fragment</code> {ExecutionModel}" 15786 } 15787 ] 15788 }, 15789 "LayerPerViewNV": { 15790 "(VK_NV_mesh_shader)": [ 15791 { 15792 "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04277", 15793 "text": " The <code>LayerPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}" 15794 }, 15795 { 15796 "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04278", 15797 "text": " The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15798 }, 15799 { 15800 "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04279", 15801 "text": " The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> also be decorated with the <code>PerViewNV</code> decoration." 15802 }, 15803 { 15804 "vuid": "VUID-LayerPerViewNV-LayerPerViewNV-04280", 15805 "text": " The variable decorated with <code>LayerPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values" 15806 } 15807 ] 15808 }, 15809 "LocalInvocationId": { 15810 "core": [ 15811 { 15812 "vuid": "VUID-LocalInvocationId-LocalInvocationId-04281", 15813 "text": " The <code>LocalInvocationId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}" 15814 }, 15815 { 15816 "vuid": "VUID-LocalInvocationId-LocalInvocationId-04282", 15817 "text": " The variable decorated with <code>LocalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15818 }, 15819 { 15820 "vuid": "VUID-LocalInvocationId-LocalInvocationId-04283", 15821 "text": " The variable decorated with <code>LocalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values" 15822 } 15823 ] 15824 }, 15825 "LocalInvocationIndex": { 15826 "core": [ 15827 { 15828 "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04284", 15829 "text": " The <code>LocalInvocationIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}" 15830 }, 15831 { 15832 "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04285", 15833 "text": " The variable decorated with <code>LocalInvocationIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15834 }, 15835 { 15836 "vuid": "VUID-LocalInvocationIndex-LocalInvocationIndex-04286", 15837 "text": " The variable decorated with <code>LocalInvocationIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15838 } 15839 ] 15840 }, 15841 "MeshViewCountNV": { 15842 "(VK_NV_mesh_shader)": [ 15843 { 15844 "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04287", 15845 "text": " The <code>MeshViewCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> or <code>TaskNV</code> {ExecutionModel}" 15846 }, 15847 { 15848 "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04288", 15849 "text": " The variable decorated with <code>MeshViewCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15850 }, 15851 { 15852 "vuid": "VUID-MeshViewCountNV-MeshViewCountNV-04289", 15853 "text": " The variable decorated with <code>MeshViewCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15854 } 15855 ] 15856 }, 15857 "MeshViewIndicesNV": { 15858 "(VK_NV_mesh_shader)": [ 15859 { 15860 "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04290", 15861 "text": " The <code>MeshViewIndicesNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> or <code>TaskNV</code> {ExecutionModel}" 15862 }, 15863 { 15864 "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04291", 15865 "text": " The variable decorated with <code>MeshViewIndicesNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15866 }, 15867 { 15868 "vuid": "VUID-MeshViewIndicesNV-MeshViewIndicesNV-04292", 15869 "text": " The variable decorated with <code>MeshViewIndicesNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values" 15870 } 15871 ] 15872 }, 15873 "NumSubgroups": { 15874 "(VK_VERSION_1_1)": [ 15875 { 15876 "vuid": "VUID-NumSubgroups-NumSubgroups-04293", 15877 "text": " The <code>NumSubgroups</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}" 15878 }, 15879 { 15880 "vuid": "VUID-NumSubgroups-NumSubgroups-04294", 15881 "text": " The variable decorated with <code>NumSubgroups</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15882 }, 15883 { 15884 "vuid": "VUID-NumSubgroups-NumSubgroups-04295", 15885 "text": " The variable decorated with <code>NumSubgroups</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15886 } 15887 ] 15888 }, 15889 "NumWorkgroups": { 15890 "core": [ 15891 { 15892 "vuid": "VUID-NumWorkgroups-NumWorkgroups-04296", 15893 "text": " The <code>NumWorkgroups</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code> {ExecutionModel}" 15894 }, 15895 { 15896 "vuid": "VUID-NumWorkgroups-NumWorkgroups-04297", 15897 "text": " The variable decorated with <code>NumWorkgroups</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15898 }, 15899 { 15900 "vuid": "VUID-NumWorkgroups-NumWorkgroups-04298", 15901 "text": " The variable decorated with <code>NumWorkgroups</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values" 15902 } 15903 ] 15904 }, 15905 "ObjectRayDirectionKHR": { 15906 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15907 { 15908 "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04299", 15909 "text": " The <code>ObjectRayDirectionKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}" 15910 }, 15911 { 15912 "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04300", 15913 "text": " The variable decorated with <code>ObjectRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15914 }, 15915 { 15916 "vuid": "VUID-ObjectRayDirectionKHR-ObjectRayDirectionKHR-04301", 15917 "text": " The variable decorated with <code>ObjectRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 15918 } 15919 ] 15920 }, 15921 "ObjectRayOriginKHR": { 15922 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15923 { 15924 "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04302", 15925 "text": " The <code>ObjectRayOriginKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}" 15926 }, 15927 { 15928 "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04303", 15929 "text": " The variable decorated with <code>ObjectRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15930 }, 15931 { 15932 "vuid": "VUID-ObjectRayOriginKHR-ObjectRayOriginKHR-04304", 15933 "text": " The variable decorated with <code>ObjectRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 15934 } 15935 ] 15936 }, 15937 "ObjectToWorldKHR": { 15938 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 15939 { 15940 "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04305", 15941 "text": " The <code>ObjectToWorldKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}" 15942 }, 15943 { 15944 "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04306", 15945 "text": " The variable decorated with <code>ObjectToWorldKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15946 }, 15947 { 15948 "vuid": "VUID-ObjectToWorldKHR-ObjectToWorldKHR-04307", 15949 "text": " The variable decorated with <code>ObjectToWorldKHR</code> <strong class=\"purple\">must</strong> be declared as a matrix with four columns of three-component vectors of 32-bit floating-point values" 15950 } 15951 ] 15952 }, 15953 "PatchVertices": { 15954 "core": [ 15955 { 15956 "vuid": "VUID-PatchVertices-PatchVertices-04308", 15957 "text": " The <code>PatchVertices</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> {ExecutionModel}" 15958 }, 15959 { 15960 "vuid": "VUID-PatchVertices-PatchVertices-04309", 15961 "text": " The variable decorated with <code>PatchVertices</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15962 }, 15963 { 15964 "vuid": "VUID-PatchVertices-PatchVertices-04310", 15965 "text": " The variable decorated with <code>PatchVertices</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 15966 } 15967 ] 15968 }, 15969 "PointCoord": { 15970 "core": [ 15971 { 15972 "vuid": "VUID-PointCoord-PointCoord-04311", 15973 "text": " The <code>PointCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 15974 }, 15975 { 15976 "vuid": "VUID-PointCoord-PointCoord-04312", 15977 "text": " The variable decorated with <code>PointCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 15978 }, 15979 { 15980 "vuid": "VUID-PointCoord-PointCoord-04313", 15981 "text": " The variable decorated with <code>PointCoord</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values" 15982 } 15983 ] 15984 }, 15985 "PointSize": { 15986 "core": [ 15987 { 15988 "vuid": "VUID-PointSize-PointSize-04314", 15989 "text": " The <code>PointSize</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}" 15990 }, 15991 { 15992 "vuid": "VUID-PointSize-PointSize-04315", 15993 "text": " The variable decorated with <code>PointSize</code> within the <code>MeshNV</code> or <code>Vertex</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 15994 }, 15995 { 15996 "vuid": "VUID-PointSize-PointSize-04316", 15997 "text": " The variable decorated with <code>PointSize</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared using a {StorageClass} other than <code>Input</code> or <code>Output</code>" 15998 }, 15999 { 16000 "vuid": "VUID-PointSize-PointSize-04317", 16001 "text": " The variable decorated with <code>PointSize</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value" 16002 } 16003 ] 16004 }, 16005 "Position": { 16006 "core": [ 16007 { 16008 "vuid": "VUID-Position-Position-04318", 16009 "text": " The <code>Position</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}" 16010 }, 16011 { 16012 "vuid": "VUID-Position-Position-04319", 16013 "text": " The variable decorated with <code>Position</code> within <code>MeshNV</code> or <code>Vertex</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16014 }, 16015 { 16016 "vuid": "VUID-Position-Position-04320", 16017 "text": " The variable decorated with <code>Position</code> within <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared using a {StorageClass} other than <code>Input</code> or <code>Output</code>" 16018 }, 16019 { 16020 "vuid": "VUID-Position-Position-04321", 16021 "text": " The variable decorated with <code>Position</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit floating-point values" 16022 } 16023 ] 16024 }, 16025 "PositionPerViewNV": { 16026 "(VK_NVX_multiview_per_view_attributes)": [ 16027 { 16028 "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04322", 16029 "text": " The <code>PositionPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}" 16030 }, 16031 { 16032 "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04323", 16033 "text": " The variable decorated with <code>PositionPerViewNV</code> within the <code>Vertex</code>, or <code>MeshNV</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16034 }, 16035 { 16036 "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04324", 16037 "text": " The variable decorated with <code>PositionPerViewNV</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> not be declared using a {StorageClass} other than <code>Input</code> or <code>Output</code>" 16038 }, 16039 { 16040 "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04325", 16041 "text": " The variable decorated with <code>PositionPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of four-component vector of 32-bit floating-point values with at least as many elements as the maximum view in the subpass’s view mask plus one" 16042 }, 16043 { 16044 "vuid": "VUID-PositionPerViewNV-PositionPerViewNV-04326", 16045 "text": " The array variable decorated with <code>PositionPerViewNV</code> <strong class=\"purple\">must</strong> only be indexed by a constant or specialization constant" 16046 } 16047 ] 16048 }, 16049 "PrimitiveCountNV": { 16050 "(VK_NV_mesh_shader)": [ 16051 { 16052 "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04327", 16053 "text": " The <code>PrimitiveCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}" 16054 }, 16055 { 16056 "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04328", 16057 "text": " The variable decorated with <code>PrimitiveCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16058 }, 16059 { 16060 "vuid": "VUID-PrimitiveCountNV-PrimitiveCountNV-04329", 16061 "text": " The variable decorated with <code>PrimitiveCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16062 } 16063 ] 16064 }, 16065 "PrimitiveId": { 16066 "core": [ 16067 { 16068 "vuid": "VUID-PrimitiveId-PrimitiveId-04330", 16069 "text": " The <code>PrimitiveId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> {ExecutionModel}" 16070 }, 16071 { 16072 "vuid": "VUID-PrimitiveId-Fragment-04331", 16073 "text": " If pipeline contains both the <code>Fragment</code> and <code>Geometry</code> {ExecutionModel} and a variable decorated with <code>PrimitiveId</code> is read from <code>Fragment</code> shader, then the <code>Geometry</code> shader <strong class=\"purple\">must</strong> write to the output variables decorated with <code>PrimitiveId</code> in all execution paths" 16074 }, 16075 { 16076 "vuid": "VUID-PrimitiveId-Fragment-04332", 16077 "text": " If pipeline contains both the <code>Fragment</code> and <code>MeshNV</code> {ExecutionModel} and a variable decorated with <code>PrimitiveId</code> is read from <code>Fragment</code> shader, then the <code>MeshNV</code> shader <strong class=\"purple\">must</strong> write to the output variables decorated with <code>PrimitiveId</code> in all execution paths" 16078 }, 16079 { 16080 "vuid": "VUID-PrimitiveId-Fragment-04333", 16081 "text": " If <code>Fragment</code> {ExecutionModel} contains a variable decorated with <code>PrimitiveId</code> either the <code>Geometry</code> or <code>Tessellation</code> capability <strong class=\"purple\">must</strong> also be declared" 16082 }, 16083 { 16084 "vuid": "VUID-PrimitiveId-PrimitiveId-04334", 16085 "text": " The variable decorated with <code>PrimitiveId</code> within the <code>TessellationControl</code>, <code>TessellationEvaluation</code>, <code>Fragment</code>, <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16086 }, 16087 { 16088 "vuid": "VUID-PrimitiveId-PrimitiveId-04335", 16089 "text": " The variable decorated with <code>PrimitiveId</code> within the <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> or <code>Output</code> {StorageClass}" 16090 }, 16091 { 16092 "vuid": "VUID-PrimitiveId-PrimitiveId-04336", 16093 "text": " The variable decorated with <code>PrimitiveId</code> within the <code>MeshNV</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16094 }, 16095 { 16096 "vuid": "VUID-PrimitiveId-PrimitiveId-04337", 16097 "text": " The variable decorated with <code>PrimitiveId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16098 } 16099 ] 16100 }, 16101 "PrimitiveIndicesNV": { 16102 "(VK_NV_mesh_shader)": [ 16103 { 16104 "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04338", 16105 "text": " The <code>PrimitiveIndicesNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code> {ExecutionModel}" 16106 }, 16107 { 16108 "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04339", 16109 "text": " The variable decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16110 }, 16111 { 16112 "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04340", 16113 "text": " The variable decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be declared as an array of scalar 32-bit integer values" 16114 }, 16115 { 16116 "vuid": "VUID-PrimitiveIndicesNV-PrimitiveIndicesNV-04341", 16117 "text": " All index values of the array decorated with <code>PrimitiveIndicesNV</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0, N-1]</span>, where <span class=\"eq\">N</span> is the value specified by the <code>OutputVertices</code> {ExecutionMode}" 16118 }, 16119 { 16120 "vuid": "VUID-PrimitiveIndicesNV-OutputPoints-04342", 16121 "text": " If the {ExecutionMode} is <code>OutputPoints</code>, then the array decorated with <code>PrimitiveIndicesNV</code> must be the size of the value specified by <code>OutputPrimitivesNV</code>" 16122 }, 16123 { 16124 "vuid": "VUID-PrimitiveIndicesNV-OutputLinesNV-04343", 16125 "text": " If the {ExecutionMode} is <code>OutputLinesNV</code>, then the array decorated with <code>PrimitiveIndicesNV</code> must be the size of two times the value specified by <code>OutputPrimitivesNV</code>" 16126 }, 16127 { 16128 "vuid": "VUID-PrimitiveIndicesNV-OutputTrianglesNV-04344", 16129 "text": " If the {ExecutionMode} is <code>OutputTrianglesNV</code>, then the array decorated with <code>PrimitiveIndicesNV</code> must be the size of three times the value specified by <code>OutputPrimitivesNV</code>" 16130 } 16131 ] 16132 }, 16133 "PrimitiveShadingRateKHR": { 16134 "(VK_KHR_fragment_shading_rate)": [ 16135 { 16136 "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04484", 16137 "text": " The <code>PrimitiveShadingRateKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, or <code>Geometry</code> {ExecutionModel}" 16138 }, 16139 { 16140 "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04485", 16141 "text": " The variable decorated with <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16142 }, 16143 { 16144 "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04486", 16145 "text": " The variable decorated with <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16146 }, 16147 { 16148 "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04487", 16149 "text": " The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> include no more than one of <code>Vertical2Pixels</code> and <code>Vertical4Pixels</code>" 16150 }, 16151 { 16152 "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04488", 16153 "text": " The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> include no more than one of <code>Horizontal2Pixels</code> and <code>Horizontal4Pixels</code>" 16154 }, 16155 { 16156 "vuid": "VUID-PrimitiveShadingRateKHR-PrimitiveShadingRateKHR-04489", 16157 "text": " The value written to <code>PrimitiveShadingRateKHR</code> <strong class=\"purple\">must</strong> not have any bits set other than those defined by <strong>Fragment Shading Rate Flags</strong> enumerants in the SPIR-V specification" 16158 } 16159 ] 16160 }, 16161 "RayGeometryIndexKHR": { 16162 "(VK_KHR_ray_tracing)": [ 16163 { 16164 "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04345", 16165 "text": " The <code>RayGeometryIndexKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}" 16166 }, 16167 { 16168 "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04346", 16169 "text": " The variable decorated with <code>RayGeometryIndexKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16170 }, 16171 { 16172 "vuid": "VUID-RayGeometryIndexKHR-RayGeometryIndexKHR-04347", 16173 "text": " The variable decorated with <code>RayGeometryIndexKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16174 } 16175 ] 16176 }, 16177 "RayTmaxKHR": { 16178 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 16179 { 16180 "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04348", 16181 "text": " The <code>RayTmaxKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}" 16182 }, 16183 { 16184 "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04349", 16185 "text": " The variable decorated with <code>RayTmaxKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16186 }, 16187 { 16188 "vuid": "VUID-RayTmaxKHR-RayTmaxKHR-04350", 16189 "text": " The variable decorated with <code>RayTmaxKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value" 16190 } 16191 ] 16192 }, 16193 "RayTminKHR": { 16194 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 16195 { 16196 "vuid": "VUID-RayTminKHR-RayTminKHR-04351", 16197 "text": " The <code>RayTminKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}" 16198 }, 16199 { 16200 "vuid": "VUID-RayTminKHR-RayTminKHR-04352", 16201 "text": " The variable decorated with <code>RayTminKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16202 }, 16203 { 16204 "vuid": "VUID-RayTminKHR-RayTminKHR-04353", 16205 "text": " The variable decorated with <code>RayTminKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit floating-point value" 16206 } 16207 ] 16208 }, 16209 "SampleId": { 16210 "core": [ 16211 { 16212 "vuid": "VUID-SampleId-SampleId-04354", 16213 "text": " The <code>SampleId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 16214 }, 16215 { 16216 "vuid": "VUID-SampleId-SampleId-04355", 16217 "text": " The variable decorated with <code>SampleId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16218 }, 16219 { 16220 "vuid": "VUID-SampleId-SampleId-04356", 16221 "text": " The variable decorated with <code>SampleId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16222 } 16223 ] 16224 }, 16225 "SampleMask": { 16226 "core": [ 16227 { 16228 "vuid": "VUID-SampleMask-SampleMask-04357", 16229 "text": " The <code>SampleMask</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 16230 }, 16231 { 16232 "vuid": "VUID-SampleMask-SampleMask-04358", 16233 "text": " The variable decorated with <code>SampleMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> or <code>Output</code> {StorageClass}" 16234 }, 16235 { 16236 "vuid": "VUID-SampleMask-SampleMask-04359", 16237 "text": " The variable decorated with <code>SampleMask</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values" 16238 } 16239 ] 16240 }, 16241 "SamplePosition": { 16242 "core": [ 16243 { 16244 "vuid": "VUID-SamplePosition-SamplePosition-04360", 16245 "text": " The <code>SamplePosition</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 16246 }, 16247 { 16248 "vuid": "VUID-SamplePosition-SamplePosition-04361", 16249 "text": " The variable decorated with <code>SamplePosition</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16250 }, 16251 { 16252 "vuid": "VUID-SamplePosition-SamplePosition-04362", 16253 "text": " The variable decorated with <code>SamplePosition</code> <strong class=\"purple\">must</strong> be declared as a two-component vector of 32-bit floating-point values" 16254 } 16255 ] 16256 }, 16257 "ShadingRateKHR": { 16258 "(VK_KHR_fragment_shading_rate)": [ 16259 { 16260 "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04490", 16261 "text": " The <code>ShadingRateKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Fragment</code> {ExecutionModel}" 16262 }, 16263 { 16264 "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04491", 16265 "text": " The variable decorated with <code>ShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16266 }, 16267 { 16268 "vuid": "VUID-ShadingRateKHR-ShadingRateKHR-04492", 16269 "text": " The variable decorated with <code>ShadingRateKHR</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16270 } 16271 ] 16272 }, 16273 "SMCountNV": { 16274 "(VK_NV_shader_sm_builtins)": [ 16275 { 16276 "vuid": "VUID-SMCountNV-SMCountNV-04363", 16277 "text": " The variable decorated with <code>SMCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16278 }, 16279 { 16280 "vuid": "VUID-SMCountNV-SMCountNV-04364", 16281 "text": " The variable decorated with <code>SMCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16282 } 16283 ] 16284 }, 16285 "SMIDNV": { 16286 "(VK_NV_shader_sm_builtins)": [ 16287 { 16288 "vuid": "VUID-SMIDNV-SMIDNV-04365", 16289 "text": " The variable decorated with <code>SMIDNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16290 }, 16291 { 16292 "vuid": "VUID-SMIDNV-SMIDNV-04366", 16293 "text": " The variable decorated with <code>SMIDNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16294 } 16295 ] 16296 }, 16297 "SubgroupId": { 16298 "(VK_VERSION_1_1)": [ 16299 { 16300 "vuid": "VUID-SubgroupId-SubgroupId-04367", 16301 "text": " The <code>SubgroupId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}" 16302 }, 16303 { 16304 "vuid": "VUID-SubgroupId-SubgroupId-04368", 16305 "text": " The variable decorated with <code>SubgroupId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16306 }, 16307 { 16308 "vuid": "VUID-SubgroupId-SubgroupId-04369", 16309 "text": " The variable decorated with <code>SubgroupId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16310 } 16311 ] 16312 }, 16313 "SubgroupEqMask": { 16314 "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [ 16315 { 16316 "vuid": "VUID-SubgroupEqMask-SubgroupEqMask-04370", 16317 "text": " The variable decorated with <code>SubgroupEqMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16318 }, 16319 { 16320 "vuid": "VUID-SubgroupEqMask-SubgroupEqMask-04371", 16321 "text": " The variable decorated with <code>SubgroupEqMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values" 16322 } 16323 ] 16324 }, 16325 "SubgroupGeMask": { 16326 "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [ 16327 { 16328 "vuid": "VUID-SubgroupGeMask-SubgroupGeMask-04372", 16329 "text": " The variable decorated with <code>SubgroupGeMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16330 }, 16331 { 16332 "vuid": "VUID-SubgroupGeMask-SubgroupGeMask-04373", 16333 "text": " The variable decorated with <code>SubgroupGeMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values" 16334 } 16335 ] 16336 }, 16337 "SubgroupGtMask": { 16338 "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [ 16339 { 16340 "vuid": "VUID-SubgroupGtMask-SubgroupGtMask-04374", 16341 "text": " The variable decorated with <code>SubgroupGtMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16342 }, 16343 { 16344 "vuid": "VUID-SubgroupGtMask-SubgroupGtMask-04375", 16345 "text": " The variable decorated with <code>SubgroupGtMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values" 16346 } 16347 ] 16348 }, 16349 "SubgroupLeMask": { 16350 "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [ 16351 { 16352 "vuid": "VUID-SubgroupLeMask-SubgroupLeMask-04376", 16353 "text": " The variable decorated with <code>SubgroupLeMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16354 }, 16355 { 16356 "vuid": "VUID-SubgroupLeMask-SubgroupLeMask-04377", 16357 "text": " The variable decorated with <code>SubgroupLeMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values" 16358 } 16359 ] 16360 }, 16361 "SubgroupLtMask": { 16362 "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [ 16363 { 16364 "vuid": "VUID-SubgroupLtMask-SubgroupLtMask-04378", 16365 "text": " The variable decorated with <code>SubgroupLtMask</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16366 }, 16367 { 16368 "vuid": "VUID-SubgroupLtMask-SubgroupLtMask-04379", 16369 "text": " The variable decorated with <code>SubgroupLtMask</code> <strong class=\"purple\">must</strong> be declared as a four-component vector of 32-bit integer values" 16370 } 16371 ] 16372 }, 16373 "SubgroupLocalInvocationId": { 16374 "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [ 16375 { 16376 "vuid": "VUID-SubgroupLocalInvocationId-SubgroupLocalInvocationId-04380", 16377 "text": " The variable decorated with <code>SubgroupLocalInvocationId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16378 }, 16379 { 16380 "vuid": "VUID-SubgroupLocalInvocationId-SubgroupLocalInvocationId-04381", 16381 "text": " The variable decorated with <code>SubgroupLocalInvocationId</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16382 } 16383 ] 16384 }, 16385 "SubgroupSize": { 16386 "(VK_VERSION_1_1,VK_EXT_shader_subgroup_ballot)": [ 16387 { 16388 "vuid": "VUID-SubgroupSize-SubgroupSize-04382", 16389 "text": " The variable decorated with <code>SubgroupSize</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16390 }, 16391 { 16392 "vuid": "VUID-SubgroupSize-SubgroupSize-04383", 16393 "text": " The variable decorated with <code>SubgroupSize</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16394 } 16395 ] 16396 }, 16397 "TaskCountNV": { 16398 "(VK_NV_mesh_shader)": [ 16399 { 16400 "vuid": "VUID-TaskCountNV-TaskCountNV-04384", 16401 "text": " The <code>TaskCountNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TaskNV</code> {ExecutionModel}" 16402 }, 16403 { 16404 "vuid": "VUID-TaskCountNV-TaskCountNV-04385", 16405 "text": " The variable decorated with <code>TaskCountNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16406 }, 16407 { 16408 "vuid": "VUID-TaskCountNV-TaskCountNV-04386", 16409 "text": " The variable decorated with <code>TaskCountNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16410 } 16411 ] 16412 }, 16413 "TessCoord": { 16414 "core": [ 16415 { 16416 "vuid": "VUID-TessCoord-TessCoord-04387", 16417 "text": " The <code>TessCoord</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationEvaluation</code> {ExecutionModel}" 16418 }, 16419 { 16420 "vuid": "VUID-TessCoord-TessCoord-04388", 16421 "text": " The variable decorated with <code>TessCoord</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16422 }, 16423 { 16424 "vuid": "VUID-TessCoord-TessCoord-04389", 16425 "text": " The variable decorated with <code>TessCoord</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 16426 } 16427 ] 16428 }, 16429 "TessLevelOuter": { 16430 "core": [ 16431 { 16432 "vuid": "VUID-TessLevelOuter-TessLevelOuter-04390", 16433 "text": " The <code>TessLevelOuter</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> {ExecutionModel}" 16434 }, 16435 { 16436 "vuid": "VUID-TessLevelOuter-TessLevelOuter-04391", 16437 "text": " The variable decorated with <code>TessLevelOuter</code> within the <code>TessellationControl</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16438 }, 16439 { 16440 "vuid": "VUID-TessLevelOuter-TessLevelOuter-04392", 16441 "text": " The variable decorated with <code>TessLevelOuter</code> within the <code>TessellationEvaluation</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16442 }, 16443 { 16444 "vuid": "VUID-TessLevelOuter-TessLevelOuter-04393", 16445 "text": " The variable decorated with <code>TessLevelOuter</code> <strong class=\"purple\">must</strong> be declared as an array of size four, containing 32-bit floating-point values" 16446 } 16447 ] 16448 }, 16449 "TessLevelInner": { 16450 "core": [ 16451 { 16452 "vuid": "VUID-TessLevelInner-TessLevelInner-04394", 16453 "text": " The <code>TessLevelInner</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>TessellationControl</code> or <code>TessellationEvaluation</code> {ExecutionModel}" 16454 }, 16455 { 16456 "vuid": "VUID-TessLevelInner-TessLevelInner-04395", 16457 "text": " The variable decorated with <code>TessLevelInner</code> within the <code>TessellationControl</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16458 }, 16459 { 16460 "vuid": "VUID-TessLevelInner-TessLevelInner-04396", 16461 "text": " The variable decorated with <code>TessLevelInner</code> within the <code>TessellationEvaluation</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16462 }, 16463 { 16464 "vuid": "VUID-TessLevelInner-TessLevelInner-04397", 16465 "text": " The variable decorated with <code>TessLevelInner</code> <strong class=\"purple\">must</strong> be declared as an array of size two, containing 32-bit floating-point values" 16466 } 16467 ] 16468 }, 16469 "VertexIndex": { 16470 "core": [ 16471 { 16472 "vuid": "VUID-VertexIndex-VertexIndex-04398", 16473 "text": " The <code>VertexIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code> {ExecutionModel}" 16474 }, 16475 { 16476 "vuid": "VUID-VertexIndex-VertexIndex-04399", 16477 "text": " The variable decorated with <code>VertexIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16478 }, 16479 { 16480 "vuid": "VUID-VertexIndex-VertexIndex-04400", 16481 "text": " The variable decorated with <code>VertexIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16482 } 16483 ] 16484 }, 16485 "ViewIndex": { 16486 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 16487 { 16488 "vuid": "VUID-ViewIndex-ViewIndex-04401", 16489 "text": " The <code>ViewIndex</code> decoration <strong class=\"purple\">must</strong> not be used within the <code>GLCompute</code> {ExecutionModel}" 16490 }, 16491 { 16492 "vuid": "VUID-ViewIndex-ViewIndex-04402", 16493 "text": " The variable decorated with <code>ViewIndex</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16494 }, 16495 { 16496 "vuid": "VUID-ViewIndex-ViewIndex-04403", 16497 "text": " The variable decorated with <code>ViewIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16498 } 16499 ] 16500 }, 16501 "ViewportIndex": { 16502 "core": [ 16503 { 16504 "vuid": "VUID-ViewportIndex-ViewportIndex-04404", 16505 "text": " The <code>ViewportIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, <code>Geometry</code>, or <code>Fragment</code> {ExecutionModel}" 16506 }, 16507 { 16508 "vuid": "VUID-ViewportIndex-ViewportIndex-04406", 16509 "text": " The variable decorated with <code>ViewportIndex</code> within the <code>MeshNV</code>, <code>Vertex</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16510 }, 16511 { 16512 "vuid": "VUID-ViewportIndex-ViewportIndex-04407", 16513 "text": " The variable decorated with <code>ViewportIndex</code> within the <code>Fragment</code> {ExecutionModel} <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16514 }, 16515 { 16516 "vuid": "VUID-ViewportIndex-ViewportIndex-04408", 16517 "text": " The variable decorated with <code>ViewportIndex</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16518 } 16519 ], 16520 "(VK_VERSION_1_2)": [ 16521 { 16522 "vuid": "VUID-ViewportIndex-ViewportIndex-04405", 16523 "text": " If the <a href=\"#features-shaderOutputViewportIndex\">shaderOutputViewportIndex</a> feature is not enabled then the <code>ViewportIndex</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Geometry</code> or <code>Fragment</code> {ExecutionModel}" 16524 } 16525 ] 16526 }, 16527 "ViewportMaskNV": { 16528 "(VK_NV_viewport_array2)": [ 16529 { 16530 "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04409", 16531 "text": " The <code>ViewportMaskNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshNV</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}" 16532 }, 16533 { 16534 "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04410", 16535 "text": " The variable decorated with <code>ViewportMaskNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16536 }, 16537 { 16538 "vuid": "VUID-ViewportMaskNV-ViewportMaskNV-04411", 16539 "text": " The variable decorated with <code>ViewportMaskNV</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values" 16540 } 16541 ] 16542 }, 16543 "ViewportMaskPerViewNV": { 16544 "(VK_NVX_multiview_per_view_attributes+VK_NV_viewport_array2)": [ 16545 { 16546 "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04412", 16547 "text": " The <code>ViewportMaskPerViewNV</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>Vertex</code>, <code>MeshNV</code>, <code>TessellationControl</code>, <code>TessellationEvaluation</code>, or <code>Geometry</code> {ExecutionModel}" 16548 }, 16549 { 16550 "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04413", 16551 "text": " The variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Output</code> {StorageClass}" 16552 }, 16553 { 16554 "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04414", 16555 "text": " The variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be declared as an array of 32-bit integer values" 16556 }, 16557 { 16558 "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04415", 16559 "text": " The array decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be a size less than or equal to 32" 16560 }, 16561 { 16562 "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04416", 16563 "text": " The array decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> be a size greater than the maximum view in the subpass’s view mask" 16564 }, 16565 { 16566 "vuid": "VUID-ViewportMaskPerViewNV-ViewportMaskPerViewNV-04417", 16567 "text": " The array variable decorated with <code>ViewportMaskPerViewNV</code> <strong class=\"purple\">must</strong> only be indexed by a constant or specialization constant." 16568 } 16569 ] 16570 }, 16571 "WarpsPerSMNV": { 16572 "(VK_NV_shader_sm_builtins)": [ 16573 { 16574 "vuid": "VUID-WarpsPerSMNV-WarpsPerSMNV-04418", 16575 "text": " The variable decorated with <code>WarpsPerSMNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16576 }, 16577 { 16578 "vuid": "VUID-WarpsPerSMNV-WarpsPerSMNV-04419", 16579 "text": " The variable decorated with <code>WarpsPerSMNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16580 } 16581 ] 16582 }, 16583 "WarpIDNV": { 16584 "(VK_NV_shader_sm_builtins)": [ 16585 { 16586 "vuid": "VUID-WarpIDNV-WarpIDNV-04420", 16587 "text": " The variable decorated with <code>WarpIDNV</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16588 }, 16589 { 16590 "vuid": "VUID-WarpIDNV-WarpIDNV-04421", 16591 "text": " The variable decorated with <code>WarpIDNV</code> <strong class=\"purple\">must</strong> be declared as a scalar 32-bit integer value" 16592 } 16593 ] 16594 }, 16595 "WorkgroupId": { 16596 "core": [ 16597 { 16598 "vuid": "VUID-WorkgroupId-WorkgroupId-04422", 16599 "text": " The <code>WorkgroupId</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}" 16600 }, 16601 { 16602 "vuid": "VUID-WorkgroupId-WorkgroupId-04423", 16603 "text": " The variable decorated with <code>WorkgroupId</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16604 }, 16605 { 16606 "vuid": "VUID-WorkgroupId-WorkgroupId-04424", 16607 "text": " The variable decorated with <code>WorkgroupId</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values" 16608 } 16609 ] 16610 }, 16611 "WorkgroupSize": { 16612 "core": [ 16613 { 16614 "vuid": "VUID-WorkgroupSize-WorkgroupSize-04425", 16615 "text": " The <code>WorkgroupSize</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>GLCompute</code>, <code>MeshNV</code>, or <code>TaskNV</code> {ExecutionModel}" 16616 }, 16617 { 16618 "vuid": "VUID-WorkgroupSize-WorkgroupSize-04426", 16619 "text": " The variable decorated with <code>WorkgroupSize</code> <strong class=\"purple\">must</strong> be a specialization constant or a constant" 16620 }, 16621 { 16622 "vuid": "VUID-WorkgroupSize-WorkgroupSize-04427", 16623 "text": " The variable decorated with <code>WorkgroupSize</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit integer values" 16624 } 16625 ] 16626 }, 16627 "WorldRayDirectionKHR": { 16628 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 16629 { 16630 "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04428", 16631 "text": " The <code>WorldRayDirectionKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}" 16632 }, 16633 { 16634 "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04429", 16635 "text": " The variable decorated with <code>WorldRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16636 }, 16637 { 16638 "vuid": "VUID-WorldRayDirectionKHR-WorldRayDirectionKHR-04430", 16639 "text": " The variable decorated with <code>WorldRayDirectionKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 16640 } 16641 ] 16642 }, 16643 "WorldRayOriginKHR": { 16644 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 16645 { 16646 "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04431", 16647 "text": " The <code>WorldRayOriginKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, <code>ClosestHitKHR</code>, or <code>MissKHR</code> {ExecutionModel}" 16648 }, 16649 { 16650 "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04432", 16651 "text": " The variable decorated with <code>WorldRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16652 }, 16653 { 16654 "vuid": "VUID-WorldRayOriginKHR-WorldRayOriginKHR-04433", 16655 "text": " The variable decorated with <code>WorldRayOriginKHR</code> <strong class=\"purple\">must</strong> be declared as a three-component vector of 32-bit floating-point values" 16656 } 16657 ] 16658 }, 16659 "WorldToObjectKHR": { 16660 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 16661 { 16662 "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04434", 16663 "text": " The <code>WorldToObjectKHR</code> decoration <strong class=\"purple\">must</strong> be used only within the <code>IntersectionKHR</code>, <code>AnyHitKHR</code>, or <code>ClosestHitKHR</code> {ExecutionModel}" 16664 }, 16665 { 16666 "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04435", 16667 "text": " The variable decorated with <code>WorldToObjectKHR</code> <strong class=\"purple\">must</strong> be declared using the <code>Input</code> {StorageClass}" 16668 }, 16669 { 16670 "vuid": "VUID-WorldToObjectKHR-WorldToObjectKHR-04436", 16671 "text": " The variable decorated with <code>WorldToObjectKHR</code> <strong class=\"purple\">must</strong> be declared as a matrix with four columns of three-component vectors of 32-bit floating-point values" 16672 } 16673 ] 16674 }, 16675 "vkCreateQueryPool": { 16676 "core": [ 16677 { 16678 "vuid": "VUID-vkCreateQueryPool-device-parameter", 16679 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 16680 }, 16681 { 16682 "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter", 16683 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkQueryPoolCreateInfo\">VkQueryPoolCreateInfo</a> structure" 16684 }, 16685 { 16686 "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter", 16687 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 16688 }, 16689 { 16690 "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter", 16691 "text": " <code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 16692 } 16693 ] 16694 }, 16695 "VkQueryPoolCreateInfo": { 16696 "core": [ 16697 { 16698 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791", 16699 "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>queryType</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>" 16700 }, 16701 { 16702 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792", 16703 "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values" 16704 }, 16705 { 16706 "vuid": "VUID-VkQueryPoolCreateInfo-queryCount-02763", 16707 "text": " <code>queryCount</code> <strong class=\"purple\">must</strong> be greater than 0" 16708 }, 16709 { 16710 "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType", 16711 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>" 16712 }, 16713 { 16714 "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext", 16715 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a> or <a href=\"#VkQueryPoolPerformanceQueryCreateInfoINTEL\">VkQueryPoolPerformanceQueryCreateInfoINTEL</a>" 16716 }, 16717 { 16718 "vuid": "VUID-VkQueryPoolCreateInfo-sType-unique", 16719 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 16720 }, 16721 { 16722 "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask", 16723 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 16724 }, 16725 { 16726 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter", 16727 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value" 16728 } 16729 ], 16730 "(VK_KHR_performance_query)": [ 16731 { 16732 "vuid": "VUID-VkQueryPoolCreateInfo-queryType-03222", 16733 "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a structure of type <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a>" 16734 } 16735 ] 16736 }, 16737 "VkQueryPoolPerformanceCreateInfoKHR": { 16738 "(VK_KHR_performance_query)": [ 16739 { 16740 "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-queueFamilyIndex-03236", 16741 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be a valid queue family index of the device" 16742 }, 16743 { 16744 "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-performanceCounterQueryPools-03237", 16745 "text": " The <a href=\"#features-performanceCounterQueryPools\"><code>performanceCounterQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled" 16746 }, 16747 { 16748 "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-03321", 16749 "text": " Each element of <code>pCounterIndices</code> <strong class=\"purple\">must</strong> be in the range of counters reported by <code>vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR</code> for the queue family specified in <code>queueFamilyIndex</code>" 16750 }, 16751 { 16752 "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-sType-sType", 16753 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR</code>" 16754 }, 16755 { 16756 "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-pCounterIndices-parameter", 16757 "text": " <code>pCounterIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterIndexCount</code> <code>uint32_t</code> values" 16758 }, 16759 { 16760 "vuid": "VUID-VkQueryPoolPerformanceCreateInfoKHR-counterIndexCount-arraylength", 16761 "text": " <code>counterIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 16762 } 16763 ] 16764 }, 16765 "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR": { 16766 "(VK_KHR_performance_query)": [ 16767 { 16768 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-physicalDevice-parameter", 16769 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 16770 }, 16771 { 16772 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pPerformanceQueryCreateInfo-parameter", 16773 "text": " <code>pPerformanceQueryCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkQueryPoolPerformanceCreateInfoKHR\">VkQueryPoolPerformanceCreateInfoKHR</a> structure" 16774 }, 16775 { 16776 "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR-pNumPasses-parameter", 16777 "text": " <code>pNumPasses</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 16778 } 16779 ] 16780 }, 16781 "vkDestroyQueryPool": { 16782 "core": [ 16783 { 16784 "vuid": "VUID-vkDestroyQueryPool-queryPool-00793", 16785 "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution" 16786 }, 16787 { 16788 "vuid": "VUID-vkDestroyQueryPool-queryPool-00794", 16789 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 16790 }, 16791 { 16792 "vuid": "VUID-vkDestroyQueryPool-queryPool-00795", 16793 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 16794 }, 16795 { 16796 "vuid": "VUID-vkDestroyQueryPool-device-parameter", 16797 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 16798 }, 16799 { 16800 "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter", 16801 "text": " If <code>queryPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 16802 }, 16803 { 16804 "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter", 16805 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 16806 }, 16807 { 16808 "vuid": "VUID-vkDestroyQueryPool-queryPool-parent", 16809 "text": " If <code>queryPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 16810 } 16811 ] 16812 }, 16813 "vkCmdResetQueryPool": { 16814 "core": [ 16815 { 16816 "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796", 16817 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 16818 }, 16819 { 16820 "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797", 16821 "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 16822 }, 16823 { 16824 "vuid": "VUID-vkCmdResetQueryPool-None-02841", 16825 "text": " All queries used by the command <strong class=\"purple\">must</strong> not be active" 16826 }, 16827 { 16828 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter", 16829 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 16830 }, 16831 { 16832 "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter", 16833 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 16834 }, 16835 { 16836 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording", 16837 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16838 }, 16839 { 16840 "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool", 16841 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 16842 }, 16843 { 16844 "vuid": "VUID-vkCmdResetQueryPool-renderpass", 16845 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 16846 }, 16847 { 16848 "vuid": "VUID-vkCmdResetQueryPool-commonparent", 16849 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 16850 } 16851 ], 16852 "(VK_KHR_performance_query)": [ 16853 { 16854 "vuid": "VUID-vkCmdResetQueryPool-firstQuery-02862", 16855 "text": " If <code>queryPool</code> was created with <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains begin commands for a query from the set of queries <span class=\"eq\">[<code>firstQuery</code>, <code>firstQuery</code> + <code>queryCount</code> - 1]</span>" 16856 } 16857 ] 16858 }, 16859 "vkResetQueryPool": { 16860 "(VK_VERSION_1_2,VK_EXT_host_query_reset)": [ 16861 { 16862 "vuid": "VUID-vkResetQueryPool-None-02665", 16863 "text": " The <a href=\"#features-hostQueryReset\">hostQueryReset</a> feature <strong class=\"purple\">must</strong> be enabled" 16864 }, 16865 { 16866 "vuid": "VUID-vkResetQueryPool-firstQuery-02666", 16867 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 16868 }, 16869 { 16870 "vuid": "VUID-vkResetQueryPool-firstQuery-02667", 16871 "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 16872 }, 16873 { 16874 "vuid": "VUID-vkResetQueryPool-firstQuery-02741", 16875 "text": " Submitted commands that refer to the range specified by <code>firstQuery</code> and <code>queryCount</code> in <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution" 16876 }, 16877 { 16878 "vuid": "VUID-vkResetQueryPool-firstQuery-02742", 16879 "text": " The range of queries specified by <code>firstQuery</code> and <code>queryCount</code> in <code>queryPool</code> <strong class=\"purple\">must</strong> not be in use by calls to <a href=\"#vkGetQueryPoolResults\">vkGetQueryPoolResults</a> or <code>vkResetQueryPool</code> in other threads" 16880 }, 16881 { 16882 "vuid": "VUID-vkResetQueryPool-device-parameter", 16883 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 16884 }, 16885 { 16886 "vuid": "VUID-vkResetQueryPool-queryPool-parameter", 16887 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 16888 }, 16889 { 16890 "vuid": "VUID-vkResetQueryPool-queryPool-parent", 16891 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 16892 } 16893 ] 16894 }, 16895 "vkCmdBeginQuery": { 16896 "core": [ 16897 { 16898 "vuid": "VUID-vkCmdBeginQuery-queryPool-01922", 16899 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are <a href=\"#queries-operation-active\">active</a> within <code>commandBuffer</code>" 16900 }, 16901 { 16902 "vuid": "VUID-vkCmdBeginQuery-None-00807", 16903 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable" 16904 }, 16905 { 16906 "vuid": "VUID-vkCmdBeginQuery-queryType-02804", 16907 "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_TIMESTAMP</code>" 16908 }, 16909 { 16910 "vuid": "VUID-vkCmdBeginQuery-queryType-00800", 16911 "text": " If the <a href=\"#features-occlusionQueryPrecise\">precise occlusion queries</a> feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>" 16912 }, 16913 { 16914 "vuid": "VUID-vkCmdBeginQuery-query-00802", 16915 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 16916 }, 16917 { 16918 "vuid": "VUID-vkCmdBeginQuery-queryType-00803", 16919 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16920 }, 16921 { 16922 "vuid": "VUID-vkCmdBeginQuery-queryType-00804", 16923 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16924 }, 16925 { 16926 "vuid": "VUID-vkCmdBeginQuery-queryType-00805", 16927 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 16928 }, 16929 { 16930 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter", 16931 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 16932 }, 16933 { 16934 "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter", 16935 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 16936 }, 16937 { 16938 "vuid": "VUID-vkCmdBeginQuery-flags-parameter", 16939 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values" 16940 }, 16941 { 16942 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording", 16943 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 16944 }, 16945 { 16946 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool", 16947 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 16948 }, 16949 { 16950 "vuid": "VUID-vkCmdBeginQuery-commonparent", 16951 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 16952 } 16953 ], 16954 "(VK_VERSION_1_1)": [ 16955 { 16956 "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885", 16957 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 16958 } 16959 ], 16960 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 16961 { 16962 "vuid": "VUID-vkCmdBeginQuery-query-00808", 16963 "text": " If called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 16964 } 16965 ], 16966 "(VK_EXT_transform_feedback)": [ 16967 { 16968 "vuid": "VUID-vkCmdBeginQuery-queryType-02327", 16969 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 16970 }, 16971 { 16972 "vuid": "VUID-vkCmdBeginQuery-queryType-02328", 16973 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported" 16974 } 16975 ], 16976 "(VK_KHR_performance_query)": [ 16977 { 16978 "vuid": "VUID-vkCmdBeginQuery-queryPool-03223", 16979 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held before <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> was called on <code>commandBuffer</code>" 16980 }, 16981 { 16982 "vuid": "VUID-vkCmdBeginQuery-queryPool-03224", 16983 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the query begin <strong class=\"purple\">must</strong> be the first recorded command in <code>commandBuffer</code>" 16984 }, 16985 { 16986 "vuid": "VUID-vkCmdBeginQuery-queryPool-03225", 16987 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the begin command <strong class=\"purple\">must</strong> not be recorded within a render pass instance" 16988 }, 16989 { 16990 "vuid": "VUID-vkCmdBeginQuery-queryPool-03226", 16991 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and another query pool with a <code>queryType</code> <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> has been used within <code>commandBuffer</code>, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as <code>commandBuffer</code>, the <a href=\"#features-performanceCounterMultipleQueryPools\"><code>performanceCounterMultipleQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled" 16992 }, 16993 { 16994 "vuid": "VUID-vkCmdBeginQuery-None-02863", 16995 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a <code>vkCmdResetQueryPool</code> command affecting the same query" 16996 } 16997 ] 16998 }, 16999 "vkCmdBeginQueryIndexedEXT": { 17000 "core": [ 17001 { 17002 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-01922", 17003 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are <a href=\"#queries-operation-active\">active</a> within <code>commandBuffer</code>" 17004 }, 17005 { 17006 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-00807", 17007 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable" 17008 }, 17009 { 17010 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02804", 17011 "text": " The <code>queryType</code> used to create <code>queryPool</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_TIMESTAMP</code>" 17012 }, 17013 { 17014 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00800", 17015 "text": " If the <a href=\"#features-occlusionQueryPrecise\">precise occlusion queries</a> feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>" 17016 }, 17017 { 17018 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00802", 17019 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 17020 }, 17021 { 17022 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00803", 17023 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17024 }, 17025 { 17026 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00804", 17027 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17028 }, 17029 { 17030 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-00805", 17031 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 17032 }, 17033 { 17034 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338", 17035 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17036 }, 17037 { 17038 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339", 17039 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>" 17040 }, 17041 { 17042 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340", 17043 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> <strong class=\"purple\">must</strong> be zero" 17044 }, 17045 { 17046 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341", 17047 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported" 17048 } 17049 ], 17050 "(VK_VERSION_1_1)": [ 17051 { 17052 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-01885", 17053 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 17054 } 17055 ], 17056 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 17057 { 17058 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-00808", 17059 "text": " If called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 17060 } 17061 ], 17062 "(VK_KHR_performance_query)": [ 17063 { 17064 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03223", 17065 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <a href=\"#profiling-lock\">profiling lock</a> <strong class=\"purple\">must</strong> have been held before <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> was called on <code>commandBuffer</code>" 17066 }, 17067 { 17068 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03224", 17069 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the query begin <strong class=\"purple\">must</strong> be the first recorded command in <code>commandBuffer</code>" 17070 }, 17071 { 17072 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03225", 17073 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the begin command <strong class=\"purple\">must</strong> not be recorded within a render pass instance" 17074 }, 17075 { 17076 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-03226", 17077 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and another query pool with a <code>queryType</code> <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> has been used within <code>commandBuffer</code>, its parent primary command buffer or secondary command buffer recorded within the same parent primary command buffer as <code>commandBuffer</code>, the <a href=\"#features-performanceCounterMultipleQueryPools\"><code>performanceCounterMultipleQueryPools</code></a> feature <strong class=\"purple\">must</strong> be enabled" 17078 }, 17079 { 17080 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-02863", 17081 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, this command <strong class=\"purple\">must</strong> not be recorded in a command buffer that, either directly or through secondary command buffers, also contains a <code>vkCmdResetQueryPool</code> command affecting the same query" 17082 } 17083 ], 17084 "(VK_EXT_transform_feedback)": [ 17085 { 17086 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter", 17087 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17088 }, 17089 { 17090 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter", 17091 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 17092 }, 17093 { 17094 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter", 17095 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values" 17096 }, 17097 { 17098 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording", 17099 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17100 }, 17101 { 17102 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool", 17103 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 17104 }, 17105 { 17106 "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent", 17107 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 17108 } 17109 ] 17110 }, 17111 "vkCmdEndQuery": { 17112 "core": [ 17113 { 17114 "vuid": "VUID-vkCmdEndQuery-None-01923", 17115 "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>" 17116 }, 17117 { 17118 "vuid": "VUID-vkCmdEndQuery-query-00810", 17119 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 17120 }, 17121 { 17122 "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter", 17123 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17124 }, 17125 { 17126 "vuid": "VUID-vkCmdEndQuery-queryPool-parameter", 17127 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 17128 }, 17129 { 17130 "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording", 17131 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17132 }, 17133 { 17134 "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool", 17135 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 17136 }, 17137 { 17138 "vuid": "VUID-vkCmdEndQuery-commonparent", 17139 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 17140 } 17141 ], 17142 "(VK_VERSION_1_1)": [ 17143 { 17144 "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886", 17145 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 17146 } 17147 ], 17148 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 17149 { 17150 "vuid": "VUID-vkCmdEndQuery-query-00812", 17151 "text": " If <code>vkCmdEndQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 17152 } 17153 ], 17154 "(VK_KHR_performance_query)": [ 17155 { 17156 "vuid": "VUID-vkCmdEndQuery-queryPool-03227", 17157 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one or more of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR</code>, the <a href=\"#vkCmdEndQuery\">vkCmdEndQuery</a> <strong class=\"purple\">must</strong> be the last recorded command in <code>commandBuffer</code>" 17158 }, 17159 { 17160 "vuid": "VUID-vkCmdEndQuery-queryPool-03228", 17161 "text": " If <code>queryPool</code> was created with a <code>queryType</code> of <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code> and one or more of the counters used to create <code>queryPool</code> was <code>VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR</code>, the <a href=\"#vkCmdEndQuery\">vkCmdEndQuery</a> <strong class=\"purple\">must</strong> not be recorded within a render pass instance" 17162 } 17163 ] 17164 }, 17165 "vkCmdEndQueryIndexedEXT": { 17166 "(VK_EXT_transform_feedback)": [ 17167 { 17168 "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342", 17169 "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>" 17170 }, 17171 { 17172 "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343", 17173 "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 17174 }, 17175 { 17176 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346", 17177 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>" 17178 }, 17179 { 17180 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347", 17181 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> <strong class=\"purple\">must</strong> be zero" 17182 }, 17183 { 17184 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02723", 17185 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> <code>index</code> <strong class=\"purple\">must</strong> equal the <code>index</code> used to begin the query" 17186 }, 17187 { 17188 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter", 17189 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17190 }, 17191 { 17192 "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter", 17193 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 17194 }, 17195 { 17196 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording", 17197 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17198 }, 17199 { 17200 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool", 17201 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 17202 }, 17203 { 17204 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent", 17205 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 17206 } 17207 ], 17208 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [ 17209 { 17210 "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344", 17211 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 17212 } 17213 ], 17214 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 17215 { 17216 "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345", 17217 "text": " If <code>vkCmdEndQueryIndexedEXT</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 17218 } 17219 ] 17220 }, 17221 "vkGetQueryPoolResults": { 17222 "core": [ 17223 { 17224 "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813", 17225 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 17226 }, 17227 { 17228 "vuid": "VUID-vkGetQueryPoolResults-flags-02827", 17229 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code>, then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>" 17230 }, 17231 { 17232 "vuid": "VUID-vkGetQueryPoolResults-flags-00815", 17233 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>" 17234 }, 17235 { 17236 "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816", 17237 "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 17238 }, 17239 { 17240 "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817", 17241 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of each query, as described <a href=\"#queries-operation-memorylayout\">here</a>" 17242 }, 17243 { 17244 "vuid": "VUID-vkGetQueryPoolResults-queryType-00818", 17245 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>" 17246 }, 17247 { 17248 "vuid": "VUID-vkGetQueryPoolResults-device-parameter", 17249 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 17250 }, 17251 { 17252 "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter", 17253 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 17254 }, 17255 { 17256 "vuid": "VUID-vkGetQueryPoolResults-pData-parameter", 17257 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 17258 }, 17259 { 17260 "vuid": "VUID-vkGetQueryPoolResults-flags-parameter", 17261 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values" 17262 }, 17263 { 17264 "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength", 17265 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17266 }, 17267 { 17268 "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent", 17269 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 17270 } 17271 ], 17272 "(VK_KHR_performance_query)": [ 17273 { 17274 "vuid": "VUID-vkGetQueryPoolResults-flags-02828", 17275 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> and the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>" 17276 }, 17277 { 17278 "vuid": "VUID-vkGetQueryPoolResults-queryType-03229", 17279 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of the size of <a href=\"#VkPerformanceCounterResultKHR\">VkPerformanceCounterResultKHR</a>" 17280 }, 17281 { 17282 "vuid": "VUID-vkGetQueryPoolResults-queryType-04519", 17283 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be large enough to contain <code>VkQueryPoolPerformanceCreateInfoKHR</code>::<code>counterIndexCount</code> used to create <code>queryPool</code> times the size of <a href=\"#VkPerformanceCounterResultKHR\">VkPerformanceCounterResultKHR</a>." 17284 }, 17285 { 17286 "vuid": "VUID-vkGetQueryPoolResults-queryType-03230", 17287 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>, <code>VK_QUERY_RESULT_PARTIAL_BIT</code> or <code>VK_QUERY_RESULT_64_BIT</code>" 17288 }, 17289 { 17290 "vuid": "VUID-vkGetQueryPoolResults-queryType-03231", 17291 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>queryPool</code> <strong class=\"purple\">must</strong> have been recorded once for each pass as retrieved via a call to <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>" 17292 } 17293 ] 17294 }, 17295 "vkCmdCopyQueryPoolResults": { 17296 "core": [ 17297 { 17298 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819", 17299 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 17300 }, 17301 { 17302 "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820", 17303 "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>" 17304 }, 17305 { 17306 "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821", 17307 "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 17308 }, 17309 { 17310 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822", 17311 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>" 17312 }, 17313 { 17314 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823", 17315 "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>" 17316 }, 17317 { 17318 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824", 17319 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have enough storage, from <code>dstOffset</code>, to contain the result of each query, as described <a href=\"#queries-operation-memorylayout\">here</a>" 17320 }, 17321 { 17322 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825", 17323 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 17324 }, 17325 { 17326 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826", 17327 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 17328 }, 17329 { 17330 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827", 17331 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>" 17332 }, 17333 { 17334 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter", 17335 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17336 }, 17337 { 17338 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter", 17339 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 17340 }, 17341 { 17342 "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter", 17343 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 17344 }, 17345 { 17346 "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter", 17347 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values" 17348 }, 17349 { 17350 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording", 17351 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17352 }, 17353 { 17354 "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool", 17355 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 17356 }, 17357 { 17358 "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass", 17359 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 17360 }, 17361 { 17362 "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent", 17363 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 17364 } 17365 ], 17366 "(VK_KHR_performance_query)": [ 17367 { 17368 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03232", 17369 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <a href=\"#VkPhysicalDevicePerformanceQueryPropertiesKHR\">VkPhysicalDevicePerformanceQueryPropertiesKHR</a>::<code>allowCommandBufferQueryCopies</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 17370 }, 17371 { 17372 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03233", 17373 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_WITH_AVAILABILITY_BIT</code>, <code>VK_QUERY_RESULT_PARTIAL_BIT</code> or <code>VK_QUERY_RESULT_64_BIT</code>" 17374 }, 17375 { 17376 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-03234", 17377 "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR</code>, the <code>queryPool</code> <strong class=\"purple\">must</strong> have been submitted once for each pass as retrieved via a call to <a href=\"#vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR\">vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR</a>" 17378 } 17379 ], 17380 "(VK_INTEL_performance_query)": [ 17381 { 17382 "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-02734", 17383 "text": " <a href=\"#vkCmdCopyQueryPoolResults\">vkCmdCopyQueryPoolResults</a> <strong class=\"purple\">must</strong> not be called if the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL</code>" 17384 } 17385 ] 17386 }, 17387 "vkCmdWriteTimestamp": { 17388 "core": [ 17389 { 17390 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04074", 17391 "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a <a href=\"#synchronization-pipeline-stages-supported\">valid stage</a> for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from" 17392 }, 17393 { 17394 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04075", 17395 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 17396 }, 17397 { 17398 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04076", 17399 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 17400 }, 17401 { 17402 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416", 17403 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>" 17404 }, 17405 { 17406 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828", 17407 "text": " The query identified by <code>queryPool</code> and <code>query</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>" 17408 }, 17409 { 17410 "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829", 17411 "text": " The command pool’s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>" 17412 }, 17413 { 17414 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter", 17415 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17416 }, 17417 { 17418 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter", 17419 "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value" 17420 }, 17421 { 17422 "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter", 17423 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 17424 }, 17425 { 17426 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording", 17427 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17428 }, 17429 { 17430 "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool", 17431 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 17432 }, 17433 { 17434 "vuid": "VUID-vkCmdWriteTimestamp-commonparent", 17435 "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 17436 } 17437 ], 17438 "(VK_EXT_conditional_rendering)": [ 17439 { 17440 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04077", 17441 "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>" 17442 } 17443 ], 17444 "(VK_EXT_fragment_density_map)": [ 17445 { 17446 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04078", 17447 "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>" 17448 } 17449 ], 17450 "(VK_EXT_transform_feedback)": [ 17451 { 17452 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04079", 17453 "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>" 17454 } 17455 ], 17456 "(VK_NV_mesh_shader)": [ 17457 { 17458 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04080", 17459 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code> or <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 17460 } 17461 ], 17462 "(VK_NV_shading_rate_image)": [ 17463 { 17464 "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-04081", 17465 "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 17466 } 17467 ], 17468 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 17469 { 17470 "vuid": "VUID-vkCmdWriteTimestamp-None-00830", 17471 "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable" 17472 }, 17473 { 17474 "vuid": "VUID-vkCmdWriteTimestamp-query-00831", 17475 "text": " If <code>vkCmdWriteTimestamp</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass’s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>" 17476 } 17477 ] 17478 }, 17479 "vkAcquireProfilingLockKHR": { 17480 "(VK_KHR_performance_query)": [ 17481 { 17482 "vuid": "VUID-vkAcquireProfilingLockKHR-device-parameter", 17483 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 17484 }, 17485 { 17486 "vuid": "VUID-vkAcquireProfilingLockKHR-pInfo-parameter", 17487 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAcquireProfilingLockInfoKHR\">VkAcquireProfilingLockInfoKHR</a> structure" 17488 } 17489 ] 17490 }, 17491 "VkAcquireProfilingLockInfoKHR": { 17492 "(VK_KHR_performance_query)": [ 17493 { 17494 "vuid": "VUID-VkAcquireProfilingLockInfoKHR-sType-sType", 17495 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR</code>" 17496 }, 17497 { 17498 "vuid": "VUID-VkAcquireProfilingLockInfoKHR-pNext-pNext", 17499 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 17500 }, 17501 { 17502 "vuid": "VUID-VkAcquireProfilingLockInfoKHR-flags-zerobitmask", 17503 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 17504 } 17505 ] 17506 }, 17507 "vkReleaseProfilingLockKHR": { 17508 "(VK_KHR_performance_query)": [ 17509 { 17510 "vuid": "VUID-vkReleaseProfilingLockKHR-device-03235", 17511 "text": " The profiling lock of <code>device</code> <strong class=\"purple\">must</strong> have been held via a previous successful call to <a href=\"#vkAcquireProfilingLockKHR\">vkAcquireProfilingLockKHR</a>" 17512 }, 17513 { 17514 "vuid": "VUID-vkReleaseProfilingLockKHR-device-parameter", 17515 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 17516 } 17517 ] 17518 }, 17519 "vkInitializePerformanceApiINTEL": { 17520 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17521 { 17522 "vuid": "VUID-vkInitializePerformanceApiINTEL-device-parameter", 17523 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 17524 }, 17525 { 17526 "vuid": "VUID-vkInitializePerformanceApiINTEL-pInitializeInfo-parameter", 17527 "text": " <code>pInitializeInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkInitializePerformanceApiInfoINTEL\">VkInitializePerformanceApiInfoINTEL</a> structure" 17528 } 17529 ] 17530 }, 17531 "VkInitializePerformanceApiInfoINTEL": { 17532 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17533 { 17534 "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-sType-sType", 17535 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL</code>" 17536 }, 17537 { 17538 "vuid": "VUID-VkInitializePerformanceApiInfoINTEL-pNext-pNext", 17539 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 17540 } 17541 ] 17542 }, 17543 "vkUninitializePerformanceApiINTEL": { 17544 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17545 { 17546 "vuid": "VUID-vkUninitializePerformanceApiINTEL-device-parameter", 17547 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 17548 } 17549 ] 17550 }, 17551 "vkGetPerformanceParameterINTEL": { 17552 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17553 { 17554 "vuid": "VUID-vkGetPerformanceParameterINTEL-device-parameter", 17555 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 17556 }, 17557 { 17558 "vuid": "VUID-vkGetPerformanceParameterINTEL-parameter-parameter", 17559 "text": " <code>parameter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceParameterTypeINTEL\">VkPerformanceParameterTypeINTEL</a> value" 17560 }, 17561 { 17562 "vuid": "VUID-vkGetPerformanceParameterINTEL-pValue-parameter", 17563 "text": " <code>pValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPerformanceValueINTEL\">VkPerformanceValueINTEL</a> structure" 17564 } 17565 ] 17566 }, 17567 "VkPerformanceValueINTEL": { 17568 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17569 { 17570 "vuid": "VUID-VkPerformanceValueINTEL-type-parameter", 17571 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceValueTypeINTEL\">VkPerformanceValueTypeINTEL</a> value" 17572 }, 17573 { 17574 "vuid": "VUID-VkPerformanceValueINTEL-valueString-parameter", 17575 "text": " If <code>type</code> is <code>VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL</code>, the <code>valueString</code> member of <code>data</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 17576 } 17577 ] 17578 }, 17579 "VkQueryPoolPerformanceQueryCreateInfoINTEL": { 17580 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17581 { 17582 "vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-sType-sType", 17583 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL</code>" 17584 }, 17585 { 17586 "vuid": "VUID-VkQueryPoolPerformanceQueryCreateInfoINTEL-performanceCountersSampling-parameter", 17587 "text": " <code>performanceCountersSampling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPoolSamplingModeINTEL\">VkQueryPoolSamplingModeINTEL</a> value" 17588 } 17589 ] 17590 }, 17591 "vkCmdSetPerformanceMarkerINTEL": { 17592 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17593 { 17594 "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-parameter", 17595 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17596 }, 17597 { 17598 "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-pMarkerInfo-parameter", 17599 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceMarkerInfoINTEL\">VkPerformanceMarkerInfoINTEL</a> structure" 17600 }, 17601 { 17602 "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-recording", 17603 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17604 }, 17605 { 17606 "vuid": "VUID-vkCmdSetPerformanceMarkerINTEL-commandBuffer-cmdpool", 17607 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations" 17608 } 17609 ] 17610 }, 17611 "VkPerformanceMarkerInfoINTEL": { 17612 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17613 { 17614 "vuid": "VUID-VkPerformanceMarkerInfoINTEL-sType-sType", 17615 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL</code>" 17616 }, 17617 { 17618 "vuid": "VUID-VkPerformanceMarkerInfoINTEL-pNext-pNext", 17619 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 17620 } 17621 ] 17622 }, 17623 "vkCmdSetPerformanceStreamMarkerINTEL": { 17624 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17625 { 17626 "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-parameter", 17627 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17628 }, 17629 { 17630 "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-pMarkerInfo-parameter", 17631 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceStreamMarkerInfoINTEL\">VkPerformanceStreamMarkerInfoINTEL</a> structure" 17632 }, 17633 { 17634 "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-recording", 17635 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17636 }, 17637 { 17638 "vuid": "VUID-vkCmdSetPerformanceStreamMarkerINTEL-commandBuffer-cmdpool", 17639 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations" 17640 } 17641 ] 17642 }, 17643 "VkPerformanceStreamMarkerInfoINTEL": { 17644 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17645 { 17646 "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-marker-02735", 17647 "text": " The value written by the application into <code>marker</code> <strong class=\"purple\">must</strong> only used the valid bits as reported by <a href=\"#vkGetPerformanceParameterINTEL\">vkGetPerformanceParameterINTEL</a> with the <code>VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL</code>" 17648 }, 17649 { 17650 "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType", 17651 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL</code>" 17652 }, 17653 { 17654 "vuid": "VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext", 17655 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 17656 } 17657 ] 17658 }, 17659 "vkCmdSetPerformanceOverrideINTEL": { 17660 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17661 { 17662 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-02736", 17663 "text": " <code>pOverrideInfo</code> <strong class=\"purple\">must</strong> not be used with a <a href=\"#VkPerformanceOverrideTypeINTEL\">VkPerformanceOverrideTypeINTEL</a> that is not reported available by <code>vkGetPerformanceParameterINTEL</code>" 17664 }, 17665 { 17666 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-parameter", 17667 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17668 }, 17669 { 17670 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-pOverrideInfo-parameter", 17671 "text": " <code>pOverrideInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceOverrideInfoINTEL\">VkPerformanceOverrideInfoINTEL</a> structure" 17672 }, 17673 { 17674 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-recording", 17675 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17676 }, 17677 { 17678 "vuid": "VUID-vkCmdSetPerformanceOverrideINTEL-commandBuffer-cmdpool", 17679 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations" 17680 } 17681 ] 17682 }, 17683 "VkPerformanceOverrideInfoINTEL": { 17684 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17685 { 17686 "vuid": "VUID-VkPerformanceOverrideInfoINTEL-sType-sType", 17687 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL</code>" 17688 }, 17689 { 17690 "vuid": "VUID-VkPerformanceOverrideInfoINTEL-pNext-pNext", 17691 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 17692 }, 17693 { 17694 "vuid": "VUID-VkPerformanceOverrideInfoINTEL-type-parameter", 17695 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceOverrideTypeINTEL\">VkPerformanceOverrideTypeINTEL</a> value" 17696 } 17697 ] 17698 }, 17699 "vkAcquirePerformanceConfigurationINTEL": { 17700 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17701 { 17702 "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-device-parameter", 17703 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 17704 }, 17705 { 17706 "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pAcquireInfo-parameter", 17707 "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPerformanceConfigurationAcquireInfoINTEL\">VkPerformanceConfigurationAcquireInfoINTEL</a> structure" 17708 }, 17709 { 17710 "vuid": "VUID-vkAcquirePerformanceConfigurationINTEL-pConfiguration-parameter", 17711 "text": " <code>pConfiguration</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle" 17712 } 17713 ] 17714 }, 17715 "VkPerformanceConfigurationAcquireInfoINTEL": { 17716 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17717 { 17718 "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-sType-sType", 17719 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL</code>" 17720 }, 17721 { 17722 "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-pNext-pNext", 17723 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 17724 }, 17725 { 17726 "vuid": "VUID-VkPerformanceConfigurationAcquireInfoINTEL-type-parameter", 17727 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationTypeINTEL\">VkPerformanceConfigurationTypeINTEL</a> value" 17728 } 17729 ] 17730 }, 17731 "vkQueueSetPerformanceConfigurationINTEL": { 17732 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17733 { 17734 "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-queue-parameter", 17735 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 17736 }, 17737 { 17738 "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-configuration-parameter", 17739 "text": " <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle" 17740 }, 17741 { 17742 "vuid": "VUID-vkQueueSetPerformanceConfigurationINTEL-commonparent", 17743 "text": " Both of <code>configuration</code>, and <code>queue</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 17744 } 17745 ] 17746 }, 17747 "vkReleasePerformanceConfigurationINTEL": { 17748 "(VK_INTEL_performance_query)+(VK_INTEL_performance_query)": [ 17749 { 17750 "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-02737", 17751 "text": " <code>configuration</code> <strong class=\"purple\">must</strong> not be released before all command buffers submitted while the configuration was set are in <a href=\"#commandbuffers-lifecycle\">pending state</a>" 17752 }, 17753 { 17754 "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-device-parameter", 17755 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 17756 }, 17757 { 17758 "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parameter", 17759 "text": " If <code>configuration</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>configuration</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPerformanceConfigurationINTEL\">VkPerformanceConfigurationINTEL</a> handle" 17760 }, 17761 { 17762 "vuid": "VUID-vkReleasePerformanceConfigurationINTEL-configuration-parent", 17763 "text": " If <code>configuration</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 17764 } 17765 ] 17766 }, 17767 "vkCmdClearColorImage": { 17768 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 17769 { 17770 "vuid": "VUID-vkCmdClearColorImage-image-01993", 17771 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>image</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>" 17772 } 17773 ], 17774 "core": [ 17775 { 17776 "vuid": "VUID-vkCmdClearColorImage-image-00002", 17777 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 17778 }, 17779 { 17780 "vuid": "VUID-vkCmdClearColorImage-image-00003", 17781 "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 17782 }, 17783 { 17784 "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004", 17785 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>" 17786 }, 17787 { 17788 "vuid": "VUID-vkCmdClearColorImage-aspectMask-02498", 17789 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 17790 }, 17791 { 17792 "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470", 17793 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 17794 }, 17795 { 17796 "vuid": "VUID-vkCmdClearColorImage-pRanges-01692", 17797 "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> + <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 17798 }, 17799 { 17800 "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472", 17801 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 17802 }, 17803 { 17804 "vuid": "VUID-vkCmdClearColorImage-pRanges-01693", 17805 "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> + <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 17806 }, 17807 { 17808 "vuid": "VUID-vkCmdClearColorImage-image-00007", 17809 "text": " <code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format" 17810 }, 17811 { 17812 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter", 17813 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17814 }, 17815 { 17816 "vuid": "VUID-vkCmdClearColorImage-image-parameter", 17817 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 17818 }, 17819 { 17820 "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter", 17821 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 17822 }, 17823 { 17824 "vuid": "VUID-vkCmdClearColorImage-pColor-parameter", 17825 "text": " <code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkClearColorValue\">VkClearColorValue</a> union" 17826 }, 17827 { 17828 "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter", 17829 "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structures" 17830 }, 17831 { 17832 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording", 17833 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17834 }, 17835 { 17836 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool", 17837 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 17838 }, 17839 { 17840 "vuid": "VUID-vkCmdClearColorImage-renderpass", 17841 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 17842 }, 17843 { 17844 "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength", 17845 "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17846 }, 17847 { 17848 "vuid": "VUID-vkCmdClearColorImage-commonparent", 17849 "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 17850 } 17851 ], 17852 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 17853 { 17854 "vuid": "VUID-vkCmdClearColorImage-image-01545", 17855 "text": " <code>image</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>" 17856 } 17857 ], 17858 "!(VK_KHR_shared_presentable_image)": [ 17859 { 17860 "vuid": "VUID-vkCmdClearColorImage-imageLayout-00005", 17861 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 17862 } 17863 ], 17864 "(VK_KHR_shared_presentable_image)": [ 17865 { 17866 "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394", 17867 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 17868 } 17869 ], 17870 "(VK_VERSION_1_1)": [ 17871 { 17872 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805", 17873 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image" 17874 }, 17875 { 17876 "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806", 17877 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image" 17878 } 17879 ] 17880 }, 17881 "vkCmdClearDepthStencilImage": { 17882 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 17883 { 17884 "vuid": "VUID-vkCmdClearDepthStencilImage-image-01994", 17885 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>image</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>" 17886 } 17887 ], 17888 "!(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [ 17889 { 17890 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00009", 17891 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 17892 } 17893 ], 17894 "(VK_VERSION_1_2,VK_EXT_separate_stencil_usage)": [ 17895 { 17896 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02658", 17897 "text": " If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>image</code> was created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>::<code>stencilUsage</code> used to create <code>image</code>" 17898 }, 17899 { 17900 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02659", 17901 "text": " If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, and <code>image</code> was not created with <a href=\"#VkImageStencilUsageCreateInfo\">separate stencil usage</a>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>image</code>" 17902 }, 17903 { 17904 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-02660", 17905 "text": " If the <code>aspect</code> member of any element of <code>pRanges</code> includes <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> <strong class=\"purple\">must</strong> have been included in the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>usage</code> used to create <code>image</code>" 17906 } 17907 ], 17908 "core": [ 17909 { 17910 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010", 17911 "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 17912 }, 17913 { 17914 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011", 17915 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>" 17916 }, 17917 { 17918 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012", 17919 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be either of <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 17920 }, 17921 { 17922 "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02824", 17923 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include bits other than <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 17924 }, 17925 { 17926 "vuid": "VUID-vkCmdClearDepthStencilImage-image-02825", 17927 "text": " If the <code>image</code>’s format does not have a stencil component, then the <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include the <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> bit" 17928 }, 17929 { 17930 "vuid": "VUID-vkCmdClearDepthStencilImage-image-02826", 17931 "text": " If the <code>image</code>’s format does not have a depth component, then the <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> member of each element of the <code>pRanges</code> array <strong class=\"purple\">must</strong> not include the <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> bit" 17932 }, 17933 { 17934 "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474", 17935 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 17936 }, 17937 { 17938 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694", 17939 "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> + <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 17940 }, 17941 { 17942 "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476", 17943 "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 17944 }, 17945 { 17946 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695", 17947 "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> + <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 17948 }, 17949 { 17950 "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014", 17951 "text": " <code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format" 17952 }, 17953 { 17954 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter", 17955 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 17956 }, 17957 { 17958 "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter", 17959 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 17960 }, 17961 { 17962 "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter", 17963 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 17964 }, 17965 { 17966 "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter", 17967 "text": " <code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkClearDepthStencilValue\">VkClearDepthStencilValue</a> structure" 17968 }, 17969 { 17970 "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter", 17971 "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> structures" 17972 }, 17973 { 17974 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording", 17975 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 17976 }, 17977 { 17978 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool", 17979 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 17980 }, 17981 { 17982 "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass", 17983 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 17984 }, 17985 { 17986 "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength", 17987 "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 17988 }, 17989 { 17990 "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent", 17991 "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 17992 } 17993 ], 17994 "(VK_VERSION_1_1)": [ 17995 { 17996 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807", 17997 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image" 17998 }, 17999 { 18000 "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808", 18001 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image" 18002 } 18003 ] 18004 }, 18005 "vkCmdClearAttachments": { 18006 "core": [ 18007 { 18008 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02501", 18009 "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then the <code>colorAttachment</code> member of that element <strong class=\"purple\">must</strong> either refer to a color attachment which is <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> be a valid color attachment" 18010 }, 18011 { 18012 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02502", 18013 "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, then the current subpass' depth/stencil attachment <strong class=\"purple\">must</strong> either be <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> have a depth component" 18014 }, 18015 { 18016 "vuid": "VUID-vkCmdClearAttachments-aspectMask-02503", 18017 "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, then the current subpass' depth/stencil attachment <strong class=\"purple\">must</strong> either be <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> have a stencil component" 18018 }, 18019 { 18020 "vuid": "VUID-vkCmdClearAttachments-rect-02682", 18021 "text": " The <code>rect</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> have an <code>extent.width</code> greater than <code>0</code>" 18022 }, 18023 { 18024 "vuid": "VUID-vkCmdClearAttachments-rect-02683", 18025 "text": " The <code>rect</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> have an <code>extent.height</code> greater than <code>0</code>" 18026 }, 18027 { 18028 "vuid": "VUID-vkCmdClearAttachments-pRects-00016", 18029 "text": " The rectangular region specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within the render area of the current render pass instance" 18030 }, 18031 { 18032 "vuid": "VUID-vkCmdClearAttachments-pRects-00017", 18033 "text": " The layers specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within every attachment that <code>pAttachments</code> refers to" 18034 }, 18035 { 18036 "vuid": "VUID-vkCmdClearAttachments-layerCount-01934", 18037 "text": " The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18038 }, 18039 { 18040 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter", 18041 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 18042 }, 18043 { 18044 "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter", 18045 "text": " <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkClearAttachment\">VkClearAttachment</a> structures" 18046 }, 18047 { 18048 "vuid": "VUID-vkCmdClearAttachments-pRects-parameter", 18049 "text": " <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectCount</code> <a href=\"#VkClearRect\">VkClearRect</a> structures" 18050 }, 18051 { 18052 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording", 18053 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18054 }, 18055 { 18056 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool", 18057 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 18058 }, 18059 { 18060 "vuid": "VUID-vkCmdClearAttachments-renderpass", 18061 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 18062 }, 18063 { 18064 "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength", 18065 "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18066 }, 18067 { 18068 "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength", 18069 "text": " <code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18070 } 18071 ], 18072 "(VK_VERSION_1_1)": [ 18073 { 18074 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504", 18075 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each attachment to be cleared <strong class=\"purple\">must</strong> not be a protected image" 18076 }, 18077 { 18078 "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505", 18079 "text": " If <code>commandBuffer</code> is a protected command buffer, then each attachment to be cleared <strong class=\"purple\">must</strong> not be an unprotected image" 18080 } 18081 ], 18082 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 18083 { 18084 "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018", 18085 "text": " If the render pass instance this is recorded in uses multiview, then <code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be zero and <code>layerCount</code> <strong class=\"purple\">must</strong> be one" 18086 } 18087 ] 18088 }, 18089 "VkClearAttachment": { 18090 "core": [ 18091 { 18092 "vuid": "VUID-VkClearAttachment-aspectMask-00019", 18093 "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 18094 }, 18095 { 18096 "vuid": "VUID-VkClearAttachment-aspectMask-00020", 18097 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" 18098 }, 18099 { 18100 "vuid": "VUID-VkClearAttachment-clearValue-00021", 18101 "text": " <code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearValue</code> union" 18102 }, 18103 { 18104 "vuid": "VUID-VkClearAttachment-aspectMask-parameter", 18105 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 18106 }, 18107 { 18108 "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask", 18109 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18110 } 18111 ], 18112 "(VK_EXT_image_drm_format_modifier)": [ 18113 { 18114 "vuid": "VUID-VkClearAttachment-aspectMask-02246", 18115 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>" 18116 } 18117 ] 18118 }, 18119 "VkClearDepthStencilValue": { 18120 "(VK_EXT_depth_range_unrestricted)": [ 18121 { 18122 "vuid": "VUID-VkClearDepthStencilValue-depth-00022", 18123 "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 18124 } 18125 ], 18126 "!(VK_EXT_depth_range_unrestricted)": [ 18127 { 18128 "vuid": "VUID-VkClearDepthStencilValue-depth-02506", 18129 "text": " <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 18130 } 18131 ] 18132 }, 18133 "vkCmdFillBuffer": { 18134 "core": [ 18135 { 18136 "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024", 18137 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 18138 }, 18139 { 18140 "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025", 18141 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 18142 }, 18143 { 18144 "vuid": "VUID-vkCmdFillBuffer-size-00026", 18145 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18146 }, 18147 { 18148 "vuid": "VUID-vkCmdFillBuffer-size-00027", 18149 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>" 18150 }, 18151 { 18152 "vuid": "VUID-vkCmdFillBuffer-size-00028", 18153 "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 18154 }, 18155 { 18156 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029", 18157 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 18158 }, 18159 { 18160 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031", 18161 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18162 }, 18163 { 18164 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter", 18165 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 18166 }, 18167 { 18168 "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter", 18169 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 18170 }, 18171 { 18172 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording", 18173 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18174 }, 18175 { 18176 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool", 18177 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations" 18178 }, 18179 { 18180 "vuid": "VUID-vkCmdFillBuffer-renderpass", 18181 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18182 }, 18183 { 18184 "vuid": "VUID-vkCmdFillBuffer-commonparent", 18185 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 18186 } 18187 ], 18188 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 18189 { 18190 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030", 18191 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations" 18192 } 18193 ], 18194 "(VK_VERSION_1_1)": [ 18195 { 18196 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811", 18197 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 18198 }, 18199 { 18200 "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812", 18201 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 18202 } 18203 ] 18204 }, 18205 "vkCmdUpdateBuffer": { 18206 "core": [ 18207 { 18208 "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032", 18209 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 18210 }, 18211 { 18212 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033", 18213 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>" 18214 }, 18215 { 18216 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034", 18217 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 18218 }, 18219 { 18220 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035", 18221 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18222 }, 18223 { 18224 "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036", 18225 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 18226 }, 18227 { 18228 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037", 18229 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>" 18230 }, 18231 { 18232 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038", 18233 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 18234 }, 18235 { 18236 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter", 18237 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 18238 }, 18239 { 18240 "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter", 18241 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 18242 }, 18243 { 18244 "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter", 18245 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 18246 }, 18247 { 18248 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording", 18249 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18250 }, 18251 { 18252 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool", 18253 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 18254 }, 18255 { 18256 "vuid": "VUID-vkCmdUpdateBuffer-renderpass", 18257 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18258 }, 18259 { 18260 "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength", 18261 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18262 }, 18263 { 18264 "vuid": "VUID-vkCmdUpdateBuffer-commonparent", 18265 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 18266 } 18267 ], 18268 "(VK_VERSION_1_1)": [ 18269 { 18270 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813", 18271 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 18272 }, 18273 { 18274 "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814", 18275 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 18276 } 18277 ] 18278 }, 18279 "vkCmdCopyBuffer": { 18280 "(VK_VERSION_1_1)": [ 18281 { 18282 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822", 18283 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 18284 }, 18285 { 18286 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823", 18287 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 18288 }, 18289 { 18290 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824", 18291 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 18292 } 18293 ], 18294 "core": [ 18295 { 18296 "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113", 18297 "text": " The <code>srcOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>srcBuffer</code>" 18298 }, 18299 { 18300 "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114", 18301 "text": " The <code>dstOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 18302 }, 18303 { 18304 "vuid": "VUID-vkCmdCopyBuffer-size-00115", 18305 "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>srcBuffer</code> minus <code>srcOffset</code>" 18306 }, 18307 { 18308 "vuid": "VUID-vkCmdCopyBuffer-size-00116", 18309 "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>" 18310 }, 18311 { 18312 "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117", 18313 "text": " The union of the source regions, and the union of the destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 18314 }, 18315 { 18316 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118", 18317 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag" 18318 }, 18319 { 18320 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119", 18321 "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18322 }, 18323 { 18324 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120", 18325 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 18326 }, 18327 { 18328 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121", 18329 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18330 }, 18331 { 18332 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter", 18333 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 18334 }, 18335 { 18336 "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter", 18337 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 18338 }, 18339 { 18340 "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter", 18341 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 18342 }, 18343 { 18344 "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter", 18345 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferCopy\">VkBufferCopy</a> structures" 18346 }, 18347 { 18348 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording", 18349 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18350 }, 18351 { 18352 "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool", 18353 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 18354 }, 18355 { 18356 "vuid": "VUID-vkCmdCopyBuffer-renderpass", 18357 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18358 }, 18359 { 18360 "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength", 18361 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18362 }, 18363 { 18364 "vuid": "VUID-vkCmdCopyBuffer-commonparent", 18365 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 18366 } 18367 ] 18368 }, 18369 "VkBufferCopy": { 18370 "core": [ 18371 { 18372 "vuid": "VUID-VkBufferCopy-size-01988", 18373 "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18374 } 18375 ] 18376 }, 18377 "vkCmdCopyBuffer2KHR": { 18378 "(VK_VERSION_1_1)": [ 18379 { 18380 "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-01822", 18381 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 18382 }, 18383 { 18384 "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-01823", 18385 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 18386 }, 18387 { 18388 "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-01824", 18389 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 18390 } 18391 ], 18392 "(VK_KHR_copy_commands2)": [ 18393 { 18394 "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-parameter", 18395 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 18396 }, 18397 { 18398 "vuid": "VUID-vkCmdCopyBuffer2KHR-pCopyBufferInfo-parameter", 18399 "text": " <code>pCopyBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyBufferInfo2KHR\">VkCopyBufferInfo2KHR</a> structure" 18400 }, 18401 { 18402 "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-recording", 18403 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18404 }, 18405 { 18406 "vuid": "VUID-vkCmdCopyBuffer2KHR-commandBuffer-cmdpool", 18407 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 18408 }, 18409 { 18410 "vuid": "VUID-vkCmdCopyBuffer2KHR-renderpass", 18411 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18412 } 18413 ] 18414 }, 18415 "VkCopyBufferInfo2KHR": { 18416 "core": [ 18417 { 18418 "vuid": "VUID-VkCopyBufferInfo2KHR-srcOffset-00113", 18419 "text": " The <code>srcOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>srcBuffer</code>" 18420 }, 18421 { 18422 "vuid": "VUID-VkCopyBufferInfo2KHR-dstOffset-00114", 18423 "text": " The <code>dstOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>" 18424 }, 18425 { 18426 "vuid": "VUID-VkCopyBufferInfo2KHR-size-00115", 18427 "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>srcBuffer</code> minus <code>srcOffset</code>" 18428 }, 18429 { 18430 "vuid": "VUID-VkCopyBufferInfo2KHR-size-00116", 18431 "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>" 18432 }, 18433 { 18434 "vuid": "VUID-VkCopyBufferInfo2KHR-pRegions-00117", 18435 "text": " The union of the source regions, and the union of the destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 18436 }, 18437 { 18438 "vuid": "VUID-VkCopyBufferInfo2KHR-srcBuffer-00118", 18439 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag" 18440 }, 18441 { 18442 "vuid": "VUID-VkCopyBufferInfo2KHR-srcBuffer-00119", 18443 "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18444 }, 18445 { 18446 "vuid": "VUID-VkCopyBufferInfo2KHR-dstBuffer-00120", 18447 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 18448 }, 18449 { 18450 "vuid": "VUID-VkCopyBufferInfo2KHR-dstBuffer-00121", 18451 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18452 } 18453 ], 18454 "(VK_KHR_copy_commands2)": [ 18455 { 18456 "vuid": "VUID-VkCopyBufferInfo2KHR-sType-sType", 18457 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR</code>" 18458 }, 18459 { 18460 "vuid": "VUID-VkCopyBufferInfo2KHR-pNext-pNext", 18461 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 18462 }, 18463 { 18464 "vuid": "VUID-VkCopyBufferInfo2KHR-srcBuffer-parameter", 18465 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 18466 }, 18467 { 18468 "vuid": "VUID-VkCopyBufferInfo2KHR-dstBuffer-parameter", 18469 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 18470 }, 18471 { 18472 "vuid": "VUID-VkCopyBufferInfo2KHR-pRegions-parameter", 18473 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferCopy2KHR\">VkBufferCopy2KHR</a> structures" 18474 }, 18475 { 18476 "vuid": "VUID-VkCopyBufferInfo2KHR-regionCount-arraylength", 18477 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18478 }, 18479 { 18480 "vuid": "VUID-VkCopyBufferInfo2KHR-commonparent", 18481 "text": " Both of <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 18482 } 18483 ] 18484 }, 18485 "VkBufferCopy2KHR": { 18486 "core": [ 18487 { 18488 "vuid": "VUID-VkBufferCopy2KHR-size-01988", 18489 "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18490 } 18491 ], 18492 "(VK_KHR_copy_commands2)": [ 18493 { 18494 "vuid": "VUID-VkBufferCopy2KHR-sType-sType", 18495 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR</code>" 18496 }, 18497 { 18498 "vuid": "VUID-VkBufferCopy2KHR-pNext-pNext", 18499 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 18500 } 18501 ] 18502 }, 18503 "vkCmdCopyImage": { 18504 "(VK_VERSION_1_1)": [ 18505 { 18506 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825", 18507 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 18508 }, 18509 { 18510 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826", 18511 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 18512 }, 18513 { 18514 "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827", 18515 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 18516 } 18517 ], 18518 "core": [ 18519 { 18520 "vuid": "VUID-vkCmdCopyImage-pRegions-00124", 18521 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 18522 }, 18523 { 18524 "vuid": "VUID-vkCmdCopyImage-srcImage-00126", 18525 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 18526 }, 18527 { 18528 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128", 18529 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 18530 }, 18531 { 18532 "vuid": "VUID-vkCmdCopyImage-dstImage-00131", 18533 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 18534 }, 18535 { 18536 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133", 18537 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 18538 }, 18539 { 18540 "vuid": "VUID-vkCmdCopyImage-srcImage-00136", 18541 "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match" 18542 }, 18543 { 18544 "vuid": "VUID-vkCmdCopyImage-srcSubresource-01696", 18545 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 18546 }, 18547 { 18548 "vuid": "VUID-vkCmdCopyImage-dstSubresource-01697", 18549 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 18550 }, 18551 { 18552 "vuid": "VUID-vkCmdCopyImage-srcSubresource-01698", 18553 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 18554 }, 18555 { 18556 "vuid": "VUID-vkCmdCopyImage-dstSubresource-01699", 18557 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 18558 }, 18559 { 18560 "vuid": "VUID-vkCmdCopyImage-srcOffset-01783", 18561 "text": " The <code>srcOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 18562 }, 18563 { 18564 "vuid": "VUID-vkCmdCopyImage-dstOffset-01784", 18565 "text": " The <code>dstOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 18566 }, 18567 { 18568 "vuid": "VUID-vkCmdCopyImage-aspectMask-00142", 18569 "text": " For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>" 18570 }, 18571 { 18572 "vuid": "VUID-vkCmdCopyImage-aspectMask-00143", 18573 "text": " For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>" 18574 }, 18575 { 18576 "vuid": "VUID-vkCmdCopyImage-srcOffset-00144", 18577 "text": " For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18578 }, 18579 { 18580 "vuid": "VUID-vkCmdCopyImage-srcOffset-00145", 18581 "text": " For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18582 }, 18583 { 18584 "vuid": "VUID-vkCmdCopyImage-srcImage-00146", 18585 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18586 }, 18587 { 18588 "vuid": "VUID-vkCmdCopyImage-srcOffset-00147", 18589 "text": " For each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18590 }, 18591 { 18592 "vuid": "VUID-vkCmdCopyImage-srcImage-01785", 18593 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18594 }, 18595 { 18596 "vuid": "VUID-vkCmdCopyImage-dstImage-01786", 18597 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18598 }, 18599 { 18600 "vuid": "VUID-vkCmdCopyImage-srcImage-01787", 18601 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>" 18602 }, 18603 { 18604 "vuid": "VUID-vkCmdCopyImage-dstImage-01788", 18605 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>" 18606 }, 18607 { 18608 "vuid": "VUID-vkCmdCopyImage-dstOffset-00150", 18609 "text": " For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>" 18610 }, 18611 { 18612 "vuid": "VUID-vkCmdCopyImage-dstOffset-00151", 18613 "text": " For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>" 18614 }, 18615 { 18616 "vuid": "VUID-vkCmdCopyImage-dstImage-00152", 18617 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18618 }, 18619 { 18620 "vuid": "VUID-vkCmdCopyImage-dstOffset-00153", 18621 "text": " For each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>" 18622 }, 18623 { 18624 "vuid": "VUID-vkCmdCopyImage-srcImage-01727", 18625 "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 18626 }, 18627 { 18628 "vuid": "VUID-vkCmdCopyImage-srcImage-01728", 18629 "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18630 }, 18631 { 18632 "vuid": "VUID-vkCmdCopyImage-srcImage-01729", 18633 "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18634 }, 18635 { 18636 "vuid": "VUID-vkCmdCopyImage-srcImage-01730", 18637 "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18638 }, 18639 { 18640 "vuid": "VUID-vkCmdCopyImage-dstImage-01731", 18641 "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 18642 }, 18643 { 18644 "vuid": "VUID-vkCmdCopyImage-dstImage-01732", 18645 "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the specified <code>dstSubresource</code> of <code>dstImage</code>" 18646 }, 18647 { 18648 "vuid": "VUID-vkCmdCopyImage-dstImage-01733", 18649 "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the specified <code>dstSubresource</code> of <code>dstImage</code>" 18650 }, 18651 { 18652 "vuid": "VUID-vkCmdCopyImage-dstImage-01734", 18653 "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>" 18654 }, 18655 { 18656 "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter", 18657 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 18658 }, 18659 { 18660 "vuid": "VUID-vkCmdCopyImage-srcImage-parameter", 18661 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 18662 }, 18663 { 18664 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter", 18665 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 18666 }, 18667 { 18668 "vuid": "VUID-vkCmdCopyImage-dstImage-parameter", 18669 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 18670 }, 18671 { 18672 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter", 18673 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 18674 }, 18675 { 18676 "vuid": "VUID-vkCmdCopyImage-pRegions-parameter", 18677 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageCopy\">VkImageCopy</a> structures" 18678 }, 18679 { 18680 "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording", 18681 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18682 }, 18683 { 18684 "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool", 18685 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 18686 }, 18687 { 18688 "vuid": "VUID-vkCmdCopyImage-renderpass", 18689 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18690 }, 18691 { 18692 "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength", 18693 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 18694 }, 18695 { 18696 "vuid": "VUID-vkCmdCopyImage-commonparent", 18697 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 18698 } 18699 ], 18700 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 18701 { 18702 "vuid": "VUID-vkCmdCopyImage-srcImage-01995", 18703 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>" 18704 }, 18705 { 18706 "vuid": "VUID-vkCmdCopyImage-dstImage-01996", 18707 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>" 18708 }, 18709 { 18710 "vuid": "VUID-vkCmdCopyImage-srcImage-04443", 18711 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18712 }, 18713 { 18714 "vuid": "VUID-vkCmdCopyImage-dstImage-04444", 18715 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18716 }, 18717 { 18718 "vuid": "VUID-vkCmdCopyImage-srcImage-01790", 18719 "text": " If <code>srcImage</code> and <code>dstImage</code> are both of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18720 }, 18721 { 18722 "vuid": "VUID-vkCmdCopyImage-srcImage-01791", 18723 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>srcSubresource.layerCount</code>" 18724 }, 18725 { 18726 "vuid": "VUID-vkCmdCopyImage-dstImage-01792", 18727 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>dstSubresource.layerCount</code>" 18728 } 18729 ], 18730 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 18731 { 18732 "vuid": "VUID-vkCmdCopyImage-srcImage-00127", 18733 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18734 }, 18735 { 18736 "vuid": "VUID-vkCmdCopyImage-dstImage-00132", 18737 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18738 }, 18739 { 18740 "vuid": "VUID-vkCmdCopyImage-srcImage-00135", 18741 "text": " The <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>" 18742 } 18743 ], 18744 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 18745 { 18746 "vuid": "VUID-vkCmdCopyImage-srcImage-01546", 18747 "text": " If <code>srcImage</code> is non-sparse then the image or <em>disjoint</em> plane to be copied <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18748 }, 18749 { 18750 "vuid": "VUID-vkCmdCopyImage-dstImage-01547", 18751 "text": " If <code>dstImage</code> is non-sparse then the image or <em>disjoint</em> plane that is the destination of the copy <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 18752 }, 18753 { 18754 "vuid": "VUID-vkCmdCopyImage-srcImage-01548", 18755 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\"><em>multi-planar format</em></a>, the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>" 18756 }, 18757 { 18758 "vuid": "VUID-vkCmdCopyImage-None-01549", 18759 "text": " In a copy to or from a plane of a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image</a>, the <a href=\"#VkFormat\">VkFormat</a> of the image and plane <strong class=\"purple\">must</strong> be compatible according to <a href=\"#formats-compatible-planes\">the description of compatible planes</a> for the plane being copied" 18760 }, 18761 { 18762 "vuid": "VUID-vkCmdCopyImage-srcImage-01551", 18763 "text": " If neither <code>srcImage</code> nor <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> and <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> match" 18764 }, 18765 { 18766 "vuid": "VUID-vkCmdCopyImage-srcImage-01552", 18767 "text": " If <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" 18768 }, 18769 { 18770 "vuid": "VUID-vkCmdCopyImage-srcImage-01553", 18771 "text": " If <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 18772 }, 18773 { 18774 "vuid": "VUID-vkCmdCopyImage-dstImage-01554", 18775 "text": " If <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" 18776 }, 18777 { 18778 "vuid": "VUID-vkCmdCopyImage-dstImage-01555", 18779 "text": " If <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 18780 }, 18781 { 18782 "vuid": "VUID-vkCmdCopyImage-srcImage-01556", 18783 "text": " If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>dstImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 18784 }, 18785 { 18786 "vuid": "VUID-vkCmdCopyImage-dstImage-01557", 18787 "text": " If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 18788 } 18789 ], 18790 "!(VK_KHR_shared_presentable_image)": [ 18791 { 18792 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129", 18793 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 18794 }, 18795 { 18796 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134", 18797 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 18798 } 18799 ], 18800 "(VK_KHR_shared_presentable_image)": [ 18801 { 18802 "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917", 18803 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 18804 }, 18805 { 18806 "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395", 18807 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 18808 } 18809 ], 18810 "(VK_EXT_fragment_density_map)": [ 18811 { 18812 "vuid": "VUID-vkCmdCopyImage-dstImage-02542", 18813 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 18814 } 18815 ], 18816 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 18817 { 18818 "vuid": "VUID-vkCmdCopyImage-srcImage-00139", 18819 "text": " If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>" 18820 }, 18821 { 18822 "vuid": "VUID-vkCmdCopyImage-srcImage-01789", 18823 "text": " If <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18824 } 18825 ] 18826 }, 18827 "VkImageCopy": { 18828 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 18829 { 18830 "vuid": "VUID-VkImageCopy-aspectMask-00137", 18831 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 18832 } 18833 ], 18834 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 18835 { 18836 "vuid": "VUID-VkImageCopy-layerCount-00138", 18837 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 18838 } 18839 ], 18840 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 18841 { 18842 "vuid": "VUID-VkImageCopy-extent-00140", 18843 "text": " The number of slices of the <code>extent</code> (for 3D) or layers of the <code>srcSubresource</code> (for non-3D) <strong class=\"purple\">must</strong> match the number of slices of the <code>extent</code> (for 3D) or layers of the <code>dstSubresource</code> (for non-3D)" 18844 } 18845 ], 18846 "core": [ 18847 { 18848 "vuid": "VUID-VkImageCopy-srcSubresource-parameter", 18849 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 18850 }, 18851 { 18852 "vuid": "VUID-VkImageCopy-dstSubresource-parameter", 18853 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 18854 } 18855 ] 18856 }, 18857 "VkImageSubresourceLayers": { 18858 "core": [ 18859 { 18860 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167", 18861 "text": " If <code>aspectMask</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not contain either of <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>" 18862 }, 18863 { 18864 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168", 18865 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>" 18866 }, 18867 { 18868 "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700", 18869 "text": " <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than 0" 18870 }, 18871 { 18872 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter", 18873 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values" 18874 }, 18875 { 18876 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask", 18877 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 18878 } 18879 ], 18880 "(VK_EXT_image_drm_format_modifier)": [ 18881 { 18882 "vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247", 18883 "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE_i_BIT_EXT</code> for any index <code>i</code>" 18884 } 18885 ] 18886 }, 18887 "vkCmdCopyImage2KHR": { 18888 "(VK_VERSION_1_1)": [ 18889 { 18890 "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-01825", 18891 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 18892 }, 18893 { 18894 "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-01826", 18895 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 18896 }, 18897 { 18898 "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-01827", 18899 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 18900 } 18901 ], 18902 "(VK_KHR_copy_commands2)": [ 18903 { 18904 "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-parameter", 18905 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 18906 }, 18907 { 18908 "vuid": "VUID-vkCmdCopyImage2KHR-pCopyImageInfo-parameter", 18909 "text": " <code>pCopyImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyImageInfo2KHR\">VkCopyImageInfo2KHR</a> structure" 18910 }, 18911 { 18912 "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-recording", 18913 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 18914 }, 18915 { 18916 "vuid": "VUID-vkCmdCopyImage2KHR-commandBuffer-cmdpool", 18917 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 18918 }, 18919 { 18920 "vuid": "VUID-vkCmdCopyImage2KHR-renderpass", 18921 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 18922 } 18923 ] 18924 }, 18925 "VkCopyImageInfo2KHR": { 18926 "core": [ 18927 { 18928 "vuid": "VUID-VkCopyImageInfo2KHR-pRegions-00124", 18929 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 18930 }, 18931 { 18932 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00126", 18933 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 18934 }, 18935 { 18936 "vuid": "VUID-VkCopyImageInfo2KHR-srcImageLayout-00128", 18937 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 18938 }, 18939 { 18940 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-00131", 18941 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 18942 }, 18943 { 18944 "vuid": "VUID-VkCopyImageInfo2KHR-dstImageLayout-00133", 18945 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 18946 }, 18947 { 18948 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00136", 18949 "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match" 18950 }, 18951 { 18952 "vuid": "VUID-VkCopyImageInfo2KHR-srcSubresource-01696", 18953 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 18954 }, 18955 { 18956 "vuid": "VUID-VkCopyImageInfo2KHR-dstSubresource-01697", 18957 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 18958 }, 18959 { 18960 "vuid": "VUID-VkCopyImageInfo2KHR-srcSubresource-01698", 18961 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 18962 }, 18963 { 18964 "vuid": "VUID-VkCopyImageInfo2KHR-dstSubresource-01699", 18965 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 18966 }, 18967 { 18968 "vuid": "VUID-VkCopyImageInfo2KHR-srcOffset-01783", 18969 "text": " The <code>srcOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 18970 }, 18971 { 18972 "vuid": "VUID-VkCopyImageInfo2KHR-dstOffset-01784", 18973 "text": " The <code>dstOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 18974 }, 18975 { 18976 "vuid": "VUID-VkCopyImageInfo2KHR-aspectMask-00142", 18977 "text": " For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>" 18978 }, 18979 { 18980 "vuid": "VUID-VkCopyImageInfo2KHR-aspectMask-00143", 18981 "text": " For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>" 18982 }, 18983 { 18984 "vuid": "VUID-VkCopyImageInfo2KHR-srcOffset-00144", 18985 "text": " For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18986 }, 18987 { 18988 "vuid": "VUID-VkCopyImageInfo2KHR-srcOffset-00145", 18989 "text": " For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18990 }, 18991 { 18992 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00146", 18993 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 18994 }, 18995 { 18996 "vuid": "VUID-VkCopyImageInfo2KHR-srcOffset-00147", 18997 "text": " For each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>" 18998 }, 18999 { 19000 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01785", 19001 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19002 }, 19003 { 19004 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01786", 19005 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19006 }, 19007 { 19008 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01787", 19009 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>" 19010 }, 19011 { 19012 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01788", 19013 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>" 19014 }, 19015 { 19016 "vuid": "VUID-VkCopyImageInfo2KHR-dstOffset-00150", 19017 "text": " For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>" 19018 }, 19019 { 19020 "vuid": "VUID-VkCopyImageInfo2KHR-dstOffset-00151", 19021 "text": " For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>" 19022 }, 19023 { 19024 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-00152", 19025 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19026 }, 19027 { 19028 "vuid": "VUID-VkCopyImageInfo2KHR-dstOffset-00153", 19029 "text": " For each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>" 19030 }, 19031 { 19032 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01727", 19033 "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 19034 }, 19035 { 19036 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01728", 19037 "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the specified <code>srcSubresource</code> of <code>srcImage</code>" 19038 }, 19039 { 19040 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01729", 19041 "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the specified <code>srcSubresource</code> of <code>srcImage</code>" 19042 }, 19043 { 19044 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01730", 19045 "text": " If <code>srcImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>" 19046 }, 19047 { 19048 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01731", 19049 "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 19050 }, 19051 { 19052 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01732", 19053 "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the specified <code>dstSubresource</code> of <code>dstImage</code>" 19054 }, 19055 { 19056 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01733", 19057 "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the specified <code>dstSubresource</code> of <code>dstImage</code>" 19058 }, 19059 { 19060 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01734", 19061 "text": " If <code>dstImage</code> is a <a href=\"#blocked-image\">blocked image</a>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>" 19062 } 19063 ], 19064 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 19065 { 19066 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01995", 19067 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>" 19068 }, 19069 { 19070 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01996", 19071 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>" 19072 }, 19073 { 19074 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-04443", 19075 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19076 }, 19077 { 19078 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-04444", 19079 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19080 }, 19081 { 19082 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01790", 19083 "text": " If <code>srcImage</code> and <code>dstImage</code> are both of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19084 }, 19085 { 19086 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01791", 19087 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>srcSubresource.layerCount</code>" 19088 }, 19089 { 19090 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01792", 19091 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> equal <code>dstSubresource.layerCount</code>" 19092 } 19093 ], 19094 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19095 { 19096 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00127", 19097 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19098 }, 19099 { 19100 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-00132", 19101 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19102 }, 19103 { 19104 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00135", 19105 "text": " The <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>" 19106 } 19107 ], 19108 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19109 { 19110 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01546", 19111 "text": " If <code>srcImage</code> is non-sparse then the image or <em>disjoint</em> plane to be copied <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19112 }, 19113 { 19114 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01547", 19115 "text": " If <code>dstImage</code> is non-sparse then the image or <em>disjoint</em> plane that is the destination of the copy <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19116 }, 19117 { 19118 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01548", 19119 "text": " If the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\"><em>multi-planar format</em></a>, the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>" 19120 }, 19121 { 19122 "vuid": "VUID-VkCopyImageInfo2KHR-None-01549", 19123 "text": " In a copy to or from a plane of a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image</a>, the <a href=\"#VkFormat\">VkFormat</a> of the image and plane <strong class=\"purple\">must</strong> be compatible according to <a href=\"#formats-compatible-planes\">the description of compatible planes</a> for the plane being copied" 19124 }, 19125 { 19126 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01551", 19127 "text": " If neither <code>srcImage</code> nor <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> and <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> match" 19128 }, 19129 { 19130 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01552", 19131 "text": " If <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" 19132 }, 19133 { 19134 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01553", 19135 "text": " If <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 19136 }, 19137 { 19138 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01554", 19139 "text": " If <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>" 19140 }, 19141 { 19142 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01555", 19143 "text": " If <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>" 19144 }, 19145 { 19146 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01556", 19147 "text": " If <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>dstImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 19148 }, 19149 { 19150 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-01557", 19151 "text": " If <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, then for each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 19152 } 19153 ], 19154 "!(VK_KHR_shared_presentable_image)": [ 19155 { 19156 "vuid": "VUID-VkCopyImageInfo2KHR-srcImageLayout-00129", 19157 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 19158 }, 19159 { 19160 "vuid": "VUID-VkCopyImageInfo2KHR-dstImageLayout-00134", 19161 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 19162 } 19163 ], 19164 "(VK_KHR_shared_presentable_image)": [ 19165 { 19166 "vuid": "VUID-VkCopyImageInfo2KHR-srcImageLayout-01917", 19167 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 19168 }, 19169 { 19170 "vuid": "VUID-VkCopyImageInfo2KHR-dstImageLayout-01395", 19171 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 19172 } 19173 ], 19174 "(VK_EXT_fragment_density_map)": [ 19175 { 19176 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-02542", 19177 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 19178 } 19179 ], 19180 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 19181 { 19182 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-00139", 19183 "text": " If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>" 19184 }, 19185 { 19186 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-01789", 19187 "text": " If <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19188 } 19189 ], 19190 "(VK_KHR_copy_commands2)": [ 19191 { 19192 "vuid": "VUID-VkCopyImageInfo2KHR-sType-sType", 19193 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR</code>" 19194 }, 19195 { 19196 "vuid": "VUID-VkCopyImageInfo2KHR-pNext-pNext", 19197 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19198 }, 19199 { 19200 "vuid": "VUID-VkCopyImageInfo2KHR-srcImage-parameter", 19201 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 19202 }, 19203 { 19204 "vuid": "VUID-VkCopyImageInfo2KHR-srcImageLayout-parameter", 19205 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 19206 }, 19207 { 19208 "vuid": "VUID-VkCopyImageInfo2KHR-dstImage-parameter", 19209 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 19210 }, 19211 { 19212 "vuid": "VUID-VkCopyImageInfo2KHR-dstImageLayout-parameter", 19213 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 19214 }, 19215 { 19216 "vuid": "VUID-VkCopyImageInfo2KHR-pRegions-parameter", 19217 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageCopy2KHR\">VkImageCopy2KHR</a> structures" 19218 }, 19219 { 19220 "vuid": "VUID-VkCopyImageInfo2KHR-regionCount-arraylength", 19221 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19222 }, 19223 { 19224 "vuid": "VUID-VkCopyImageInfo2KHR-commonparent", 19225 "text": " Both of <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 19226 } 19227 ] 19228 }, 19229 "VkImageCopy2KHR": { 19230 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19231 { 19232 "vuid": "VUID-VkImageCopy2KHR-aspectMask-00137", 19233 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 19234 } 19235 ], 19236 "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 19237 { 19238 "vuid": "VUID-VkImageCopy2KHR-layerCount-00138", 19239 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 19240 } 19241 ], 19242 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 19243 { 19244 "vuid": "VUID-VkImageCopy2KHR-extent-00140", 19245 "text": " The number of slices of the <code>extent</code> (for 3D) or layers of the <code>srcSubresource</code> (for non-3D) <strong class=\"purple\">must</strong> match the number of slices of the <code>extent</code> (for 3D) or layers of the <code>dstSubresource</code> (for non-3D)" 19246 } 19247 ], 19248 "(VK_KHR_copy_commands2)": [ 19249 { 19250 "vuid": "VUID-VkImageCopy2KHR-sType-sType", 19251 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR</code>" 19252 }, 19253 { 19254 "vuid": "VUID-VkImageCopy2KHR-pNext-pNext", 19255 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19256 }, 19257 { 19258 "vuid": "VUID-VkImageCopy2KHR-srcSubresource-parameter", 19259 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 19260 }, 19261 { 19262 "vuid": "VUID-VkImageCopy2KHR-dstSubresource-parameter", 19263 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 19264 } 19265 ] 19266 }, 19267 "vkCmdCopyBufferToImage": { 19268 "(VK_VERSION_1_1)": [ 19269 { 19270 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828", 19271 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 19272 }, 19273 { 19274 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829", 19275 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 19276 }, 19277 { 19278 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830", 19279 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 19280 } 19281 ], 19282 "core": [ 19283 { 19284 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171", 19285 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" 19286 }, 19287 { 19288 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172", 19289 "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" 19290 }, 19291 { 19292 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173", 19293 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 19294 }, 19295 { 19296 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174", 19297 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag" 19298 }, 19299 { 19300 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176", 19301 "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19302 }, 19303 { 19304 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177", 19305 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 19306 }, 19307 { 19308 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178", 19309 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19310 }, 19311 { 19312 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179", 19313 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 19314 }, 19315 { 19316 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180", 19317 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 19318 }, 19319 { 19320 "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701", 19321 "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 19322 }, 19323 { 19324 "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702", 19325 "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 19326 }, 19327 { 19328 "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793", 19329 "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 19330 }, 19331 { 19332 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-04052", 19333 "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 19334 }, 19335 { 19336 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-04053", 19337 "text": " If <code>dstImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 19338 }, 19339 { 19340 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-04477", 19341 "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of <code>pRegions</code>, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>." 19342 }, 19343 { 19344 "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00197", 19345 "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}" 19346 }, 19347 { 19348 "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00198", 19349 "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}" 19350 }, 19351 { 19352 "vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00199", 19353 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19354 }, 19355 { 19356 "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00200", 19357 "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of {imageparam}" 19358 }, 19359 { 19360 "vuid": "VUID-vkCmdCopyBufferToImage-srcImage-00201", 19361 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19362 }, 19363 { 19364 "vuid": "VUID-vkCmdCopyBufferToImage-bufferRowLength-00203", 19365 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width" 19366 }, 19367 { 19368 "vuid": "VUID-vkCmdCopyBufferToImage-bufferImageHeight-00204", 19369 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height" 19370 }, 19371 { 19372 "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-00205", 19373 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 19374 }, 19375 { 19376 "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-00206", 19377 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes" 19378 }, 19379 { 19380 "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00207", 19381 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the specified <code>imageSubresource</code> of {imageparam}" 19382 }, 19383 { 19384 "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00208", 19385 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the specified <code>imageSubresource</code> of {imageparam}" 19386 }, 19387 { 19388 "vuid": "VUID-vkCmdCopyBufferToImage-imageExtent-00209", 19389 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the specified <code>imageSubresource</code> of {imageparam}" 19390 }, 19391 { 19392 "vuid": "VUID-vkCmdCopyBufferToImage-aspectMask-00211", 19393 "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}" 19394 }, 19395 { 19396 "vuid": "VUID-vkCmdCopyBufferToImage-baseArrayLayer-00213", 19397 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19398 }, 19399 { 19400 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter", 19401 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 19402 }, 19403 { 19404 "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter", 19405 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 19406 }, 19407 { 19408 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter", 19409 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 19410 }, 19411 { 19412 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter", 19413 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 19414 }, 19415 { 19416 "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter", 19417 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy\">VkBufferImageCopy</a> structures" 19418 }, 19419 { 19420 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording", 19421 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 19422 }, 19423 { 19424 "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool", 19425 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 19426 }, 19427 { 19428 "vuid": "VUID-vkCmdCopyBufferToImage-renderpass", 19429 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 19430 }, 19431 { 19432 "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength", 19433 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19434 }, 19435 { 19436 "vuid": "VUID-vkCmdCopyBufferToImage-commonparent", 19437 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 19438 } 19439 ], 19440 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 19441 { 19442 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997", 19443 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>" 19444 } 19445 ], 19446 "!(VK_KHR_shared_presentable_image)": [ 19447 { 19448 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181", 19449 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 19450 } 19451 ], 19452 "(VK_KHR_shared_presentable_image)": [ 19453 { 19454 "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396", 19455 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 19456 } 19457 ], 19458 "(VK_EXT_fragment_density_map)": [ 19459 { 19460 "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543", 19461 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 19462 } 19463 ], 19464 "!(VK_EXT_depth_range_unrestricted)": [ 19465 { 19466 "vuid": "VUID-vkCmdCopyBufferToImage-None-00214", 19467 "text": " For each element of <code>pRegions</code> whose <code>imageSubresource</code> contains a depth aspect, the data in <code>srcBuffer</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>" 19468 } 19469 ], 19470 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19471 { 19472 "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-00193", 19473 "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" 19474 } 19475 ], 19476 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19477 { 19478 "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-01558", 19479 "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" 19480 }, 19481 { 19482 "vuid": "VUID-vkCmdCopyBufferToImage-bufferOffset-01559", 19483 "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" 19484 }, 19485 { 19486 "vuid": "VUID-vkCmdCopyBufferToImage-aspectMask-01560", 19487 "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)" 19488 } 19489 ] 19490 }, 19491 "vkCmdCopyImageToBuffer": { 19492 "(VK_VERSION_1_1)": [ 19493 { 19494 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831", 19495 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 19496 }, 19497 { 19498 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832", 19499 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 19500 }, 19501 { 19502 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833", 19503 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 19504 } 19505 ], 19506 "core": [ 19507 { 19508 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183", 19509 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" 19510 }, 19511 { 19512 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182", 19513 "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" 19514 }, 19515 { 19516 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184", 19517 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 19518 }, 19519 { 19520 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186", 19521 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 19522 }, 19523 { 19524 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187", 19525 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19526 }, 19527 { 19528 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191", 19529 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 19530 }, 19531 { 19532 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192", 19533 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19534 }, 19535 { 19536 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188", 19537 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 19538 }, 19539 { 19540 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189", 19541 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 19542 }, 19543 { 19544 "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703", 19545 "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 19546 }, 19547 { 19548 "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704", 19549 "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 19550 }, 19551 { 19552 "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794", 19553 "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 19554 }, 19555 { 19556 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-04054", 19557 "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 19558 }, 19559 { 19560 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-04055", 19561 "text": " If <code>srcImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 19562 }, 19563 { 19564 "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00197", 19565 "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}" 19566 }, 19567 { 19568 "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00198", 19569 "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}" 19570 }, 19571 { 19572 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00199", 19573 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19574 }, 19575 { 19576 "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00200", 19577 "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of {imageparam}" 19578 }, 19579 { 19580 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00201", 19581 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19582 }, 19583 { 19584 "vuid": "VUID-vkCmdCopyImageToBuffer-bufferRowLength-00203", 19585 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width" 19586 }, 19587 { 19588 "vuid": "VUID-vkCmdCopyImageToBuffer-bufferImageHeight-00204", 19589 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height" 19590 }, 19591 { 19592 "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-00205", 19593 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 19594 }, 19595 { 19596 "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-00206", 19597 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes" 19598 }, 19599 { 19600 "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00207", 19601 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the specified <code>imageSubresource</code> of {imageparam}" 19602 }, 19603 { 19604 "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00208", 19605 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the specified <code>imageSubresource</code> of {imageparam}" 19606 }, 19607 { 19608 "vuid": "VUID-vkCmdCopyImageToBuffer-imageExtent-00209", 19609 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the specified <code>imageSubresource</code> of {imageparam}" 19610 }, 19611 { 19612 "vuid": "VUID-vkCmdCopyImageToBuffer-aspectMask-00211", 19613 "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}" 19614 }, 19615 { 19616 "vuid": "VUID-vkCmdCopyImageToBuffer-baseArrayLayer-00213", 19617 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19618 }, 19619 { 19620 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter", 19621 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 19622 }, 19623 { 19624 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter", 19625 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 19626 }, 19627 { 19628 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter", 19629 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 19630 }, 19631 { 19632 "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter", 19633 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 19634 }, 19635 { 19636 "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter", 19637 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy\">VkBufferImageCopy</a> structures" 19638 }, 19639 { 19640 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording", 19641 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 19642 }, 19643 { 19644 "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool", 19645 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 19646 }, 19647 { 19648 "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass", 19649 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 19650 }, 19651 { 19652 "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength", 19653 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19654 }, 19655 { 19656 "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent", 19657 "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 19658 } 19659 ], 19660 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 19661 { 19662 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998", 19663 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>" 19664 } 19665 ], 19666 "!(VK_KHR_shared_presentable_image)": [ 19667 { 19668 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190", 19669 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 19670 } 19671 ], 19672 "(VK_KHR_shared_presentable_image)": [ 19673 { 19674 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397", 19675 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 19676 } 19677 ], 19678 "(VK_EXT_fragment_density_map)": [ 19679 { 19680 "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544", 19681 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 19682 } 19683 ], 19684 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19685 { 19686 "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-00193", 19687 "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" 19688 } 19689 ], 19690 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19691 { 19692 "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-01558", 19693 "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" 19694 }, 19695 { 19696 "vuid": "VUID-vkCmdCopyImageToBuffer-bufferOffset-01559", 19697 "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" 19698 }, 19699 { 19700 "vuid": "VUID-vkCmdCopyImageToBuffer-aspectMask-01560", 19701 "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)" 19702 } 19703 ] 19704 }, 19705 "VkBufferImageCopy": { 19706 "core": [ 19707 { 19708 "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195", 19709 "text": " <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>width</code> member of <code>imageExtent</code>" 19710 }, 19711 { 19712 "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196", 19713 "text": " <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>height</code> member of <code>imageExtent</code>" 19714 }, 19715 { 19716 "vuid": "VUID-VkBufferImageCopy-aspectMask-00212", 19717 "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set" 19718 }, 19719 { 19720 "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter", 19721 "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 19722 } 19723 ] 19724 }, 19725 "vkCmdCopyBufferToImage2KHR": { 19726 "(VK_VERSION_1_1)": [ 19727 { 19728 "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01828", 19729 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 19730 }, 19731 { 19732 "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01829", 19733 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 19734 }, 19735 { 19736 "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-01830", 19737 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 19738 } 19739 ], 19740 "(VK_KHR_copy_commands2)": [ 19741 { 19742 "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-parameter", 19743 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 19744 }, 19745 { 19746 "vuid": "VUID-vkCmdCopyBufferToImage2KHR-pCopyBufferToImageInfo-parameter", 19747 "text": " <code>pCopyBufferToImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyBufferToImageInfo2KHR\">VkCopyBufferToImageInfo2KHR</a> structure" 19748 }, 19749 { 19750 "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-recording", 19751 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 19752 }, 19753 { 19754 "vuid": "VUID-vkCmdCopyBufferToImage2KHR-commandBuffer-cmdpool", 19755 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 19756 }, 19757 { 19758 "vuid": "VUID-vkCmdCopyBufferToImage2KHR-renderpass", 19759 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 19760 } 19761 ] 19762 }, 19763 "VkCopyBufferToImageInfo2KHR": { 19764 "core": [ 19765 { 19766 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00171", 19767 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" 19768 }, 19769 { 19770 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00172", 19771 "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" 19772 }, 19773 { 19774 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-00173", 19775 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 19776 }, 19777 { 19778 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00174", 19779 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag" 19780 }, 19781 { 19782 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-00176", 19783 "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19784 }, 19785 { 19786 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-00177", 19787 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 19788 }, 19789 { 19790 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-00178", 19791 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 19792 }, 19793 { 19794 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-00179", 19795 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 19796 }, 19797 { 19798 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-00180", 19799 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 19800 }, 19801 { 19802 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01701", 19803 "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 19804 }, 19805 { 19806 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageSubresource-01702", 19807 "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 19808 }, 19809 { 19810 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-01793", 19811 "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 19812 }, 19813 { 19814 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04052", 19815 "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 19816 }, 19817 { 19818 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-04053", 19819 "text": " If <code>dstImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 19820 }, 19821 { 19822 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-commandBuffer-04477", 19823 "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code>, for each element of <code>pRegions</code>, the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>." 19824 }, 19825 { 19826 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00197", 19827 "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}" 19828 }, 19829 { 19830 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00198", 19831 "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}" 19832 }, 19833 { 19834 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcImage-00199", 19835 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19836 }, 19837 { 19838 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00200", 19839 "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of {imageparam}" 19840 }, 19841 { 19842 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcImage-00201", 19843 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19844 }, 19845 { 19846 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferRowLength-00203", 19847 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width" 19848 }, 19849 { 19850 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferImageHeight-00204", 19851 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height" 19852 }, 19853 { 19854 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageOffset-00205", 19855 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 19856 }, 19857 { 19858 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-00206", 19859 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes" 19860 }, 19861 { 19862 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00207", 19863 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the specified <code>imageSubresource</code> of {imageparam}" 19864 }, 19865 { 19866 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00208", 19867 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the specified <code>imageSubresource</code> of {imageparam}" 19868 }, 19869 { 19870 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-imageExtent-00209", 19871 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the specified <code>imageSubresource</code> of {imageparam}" 19872 }, 19873 { 19874 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-aspectMask-00211", 19875 "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}" 19876 }, 19877 { 19878 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-baseArrayLayer-00213", 19879 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 19880 } 19881 ], 19882 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 19883 { 19884 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-01997", 19885 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>" 19886 } 19887 ], 19888 "!(VK_KHR_shared_presentable_image)": [ 19889 { 19890 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-00181", 19891 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 19892 } 19893 ], 19894 "(VK_KHR_shared_presentable_image)": [ 19895 { 19896 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-01396", 19897 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 19898 } 19899 ], 19900 "(VK_EXT_fragment_density_map)": [ 19901 { 19902 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-02543", 19903 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 19904 } 19905 ], 19906 "!(VK_EXT_depth_range_unrestricted)": [ 19907 { 19908 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-None-00214", 19909 "text": " For each element of <code>pRegions</code> whose <code>imageSubresource</code> contains a depth aspect, the data in <code>srcBuffer</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>" 19910 } 19911 ], 19912 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19913 { 19914 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-00193", 19915 "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" 19916 } 19917 ], 19918 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 19919 { 19920 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01558", 19921 "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" 19922 }, 19923 { 19924 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-bufferOffset-01559", 19925 "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" 19926 }, 19927 { 19928 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-aspectMask-01560", 19929 "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)" 19930 } 19931 ], 19932 "(VK_KHR_copy_commands2)": [ 19933 { 19934 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-sType-sType", 19935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR</code>" 19936 }, 19937 { 19938 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pNext-pNext", 19939 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 19940 }, 19941 { 19942 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-srcBuffer-parameter", 19943 "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 19944 }, 19945 { 19946 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImage-parameter", 19947 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 19948 }, 19949 { 19950 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-dstImageLayout-parameter", 19951 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 19952 }, 19953 { 19954 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-pRegions-parameter", 19955 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy2KHR\">VkBufferImageCopy2KHR</a> structures" 19956 }, 19957 { 19958 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-regionCount-arraylength", 19959 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 19960 }, 19961 { 19962 "vuid": "VUID-VkCopyBufferToImageInfo2KHR-commonparent", 19963 "text": " Both of <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 19964 } 19965 ] 19966 }, 19967 "vkCmdCopyImageToBuffer2KHR": { 19968 "(VK_VERSION_1_1)": [ 19969 { 19970 "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01831", 19971 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 19972 }, 19973 { 19974 "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01832", 19975 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer" 19976 }, 19977 { 19978 "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-01833", 19979 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer" 19980 } 19981 ], 19982 "(VK_KHR_copy_commands2)": [ 19983 { 19984 "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-parameter", 19985 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 19986 }, 19987 { 19988 "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-pCopyImageToBufferInfo-parameter", 19989 "text": " <code>pCopyImageToBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyImageToBufferInfo2KHR\">VkCopyImageToBufferInfo2KHR</a> structure" 19990 }, 19991 { 19992 "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-recording", 19993 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 19994 }, 19995 { 19996 "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-commandBuffer-cmdpool", 19997 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 19998 }, 19999 { 20000 "vuid": "VUID-vkCmdCopyImageToBuffer2KHR-renderpass", 20001 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 20002 } 20003 ] 20004 }, 20005 "VkCopyImageToBufferInfo2KHR": { 20006 "core": [ 20007 { 20008 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00183", 20009 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>" 20010 }, 20011 { 20012 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00182", 20013 "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" 20014 }, 20015 { 20016 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-00184", 20017 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 20018 }, 20019 { 20020 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00186", 20021 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 20022 }, 20023 { 20024 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00187", 20025 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 20026 }, 20027 { 20028 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00191", 20029 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 20030 }, 20031 { 20032 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-00192", 20033 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 20034 }, 20035 { 20036 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00188", 20037 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 20038 }, 20039 { 20040 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-00189", 20041 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 20042 }, 20043 { 20044 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01703", 20045 "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 20046 }, 20047 { 20048 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageSubresource-01704", 20049 "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> + <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 20050 }, 20051 { 20052 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-01794", 20053 "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>’s command pool’s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>" 20054 }, 20055 { 20056 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-commandBuffer-04054", 20057 "text": " If the queue family used to create the <a href=\"#VkCommandPool\">VkCommandPool</a> which <code>commandBuffer</code> was allocated from does not support <code>VK_QUEUE_GRAPHICS_BIT</code> or <code>VK_QUEUE_COMPUTE_BIT</code>, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 20058 }, 20059 { 20060 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-04055", 20061 "text": " If <code>srcImage</code> has a depth/stencil format, the <code>bufferOffset</code> member of any element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 20062 }, 20063 { 20064 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00197", 20065 "text": " For each element of <code>pRegions</code>, <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>imageSubresource</code> of {imageparam}" 20066 }, 20067 { 20068 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00198", 20069 "text": " For each element of <code>pRegions</code>, <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>imageSubresource</code> of {imageparam}" 20070 }, 20071 { 20072 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00199", 20073 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20074 }, 20075 { 20076 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00200", 20077 "text": " For each element of <code>pRegions</code>, <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>imageSubresource</code> of {imageparam}" 20078 }, 20079 { 20080 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-00201", 20081 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20082 }, 20083 { 20084 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferRowLength-00203", 20085 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width" 20086 }, 20087 { 20088 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferImageHeight-00204", 20089 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height" 20090 }, 20091 { 20092 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageOffset-00205", 20093 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block" 20094 }, 20095 { 20096 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-00206", 20097 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes" 20098 }, 20099 { 20100 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00207", 20101 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> + <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the specified <code>imageSubresource</code> of {imageparam}" 20102 }, 20103 { 20104 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00208", 20105 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> + <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the specified <code>imageSubresource</code> of {imageparam}" 20106 }, 20107 { 20108 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-imageExtent-00209", 20109 "text": " If {imageparam} is a <a href=\"#blocked-image\">blocked image</a>, for each element of <code>pRegions</code>, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> + <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the specified <code>imageSubresource</code> of {imageparam}" 20110 }, 20111 { 20112 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-aspectMask-00211", 20113 "text": " For each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in {imageparam}" 20114 }, 20115 { 20116 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-baseArrayLayer-00213", 20117 "text": " If {imageparam} is of type <code>VK_IMAGE_TYPE_3D</code>, for each element of <code>pRegions</code>, <code>imageSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20118 } 20119 ], 20120 "(VK_VERSION_1_1,VK_KHR_maintenance1)": [ 20121 { 20122 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-01998", 20123 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>" 20124 } 20125 ], 20126 "!(VK_KHR_shared_presentable_image)": [ 20127 { 20128 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-00190", 20129 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20130 } 20131 ], 20132 "(VK_KHR_shared_presentable_image)": [ 20133 { 20134 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-01397", 20135 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>" 20136 } 20137 ], 20138 "(VK_EXT_fragment_density_map)": [ 20139 { 20140 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-02544", 20141 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 20142 } 20143 ], 20144 "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 20145 { 20146 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-00193", 20147 "text": " If {imageparam} does not have a depth/stencil format, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" 20148 } 20149 ], 20150 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 20151 { 20152 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01558", 20153 "text": " If {imageparam} does not have either a depth/stencil or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format’s texel block size" 20154 }, 20155 { 20156 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-bufferOffset-01559", 20157 "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>" 20158 }, 20159 { 20160 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-aspectMask-01560", 20161 "text": " If {imageparam} has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then for each element of <code>pRegions</code>, <code>imageSubresource.aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)" 20162 } 20163 ], 20164 "(VK_KHR_copy_commands2)": [ 20165 { 20166 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-sType-sType", 20167 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR</code>" 20168 }, 20169 { 20170 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pNext-pNext", 20171 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20172 }, 20173 { 20174 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImage-parameter", 20175 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 20176 }, 20177 { 20178 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-srcImageLayout-parameter", 20179 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 20180 }, 20181 { 20182 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-dstBuffer-parameter", 20183 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 20184 }, 20185 { 20186 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-pRegions-parameter", 20187 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkBufferImageCopy2KHR\">VkBufferImageCopy2KHR</a> structures" 20188 }, 20189 { 20190 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-regionCount-arraylength", 20191 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 20192 }, 20193 { 20194 "vuid": "VUID-VkCopyImageToBufferInfo2KHR-commonparent", 20195 "text": " Both of <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 20196 } 20197 ] 20198 }, 20199 "VkBufferImageCopy2KHR": { 20200 "core": [ 20201 { 20202 "vuid": "VUID-VkBufferImageCopy2KHR-bufferRowLength-00195", 20203 "text": " <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>width</code> member of <code>imageExtent</code>" 20204 }, 20205 { 20206 "vuid": "VUID-VkBufferImageCopy2KHR-bufferImageHeight-00196", 20207 "text": " <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>height</code> member of <code>imageExtent</code>" 20208 }, 20209 { 20210 "vuid": "VUID-VkBufferImageCopy2KHR-aspectMask-00212", 20211 "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set" 20212 } 20213 ], 20214 "(VK_KHR_copy_commands2)": [ 20215 { 20216 "vuid": "VUID-VkBufferImageCopy2KHR-sType-sType", 20217 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR</code>" 20218 }, 20219 { 20220 "vuid": "VUID-VkBufferImageCopy2KHR-pNext-pNext", 20221 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20222 }, 20223 { 20224 "vuid": "VUID-VkBufferImageCopy2KHR-imageSubresource-parameter", 20225 "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 20226 } 20227 ] 20228 }, 20229 "vkCmdBlitImage": { 20230 "(VK_VERSION_1_1)": [ 20231 { 20232 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834", 20233 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 20234 }, 20235 { 20236 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835", 20237 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 20238 }, 20239 { 20240 "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836", 20241 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 20242 } 20243 ], 20244 "core": [ 20245 { 20246 "vuid": "VUID-vkCmdBlitImage-pRegions-00215", 20247 "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" 20248 }, 20249 { 20250 "vuid": "VUID-vkCmdBlitImage-pRegions-00216", 20251 "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" 20252 }, 20253 { 20254 "vuid": "VUID-vkCmdBlitImage-pRegions-00217", 20255 "text": " The union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory with any texel that <strong class=\"purple\">may</strong> be sampled during the blit operation" 20256 }, 20257 { 20258 "vuid": "VUID-vkCmdBlitImage-srcImage-01999", 20259 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_SRC_BIT</code>" 20260 }, 20261 { 20262 "vuid": "VUID-vkCmdBlitImage-srcImage-00219", 20263 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 20264 }, 20265 { 20266 "vuid": "VUID-vkCmdBlitImage-srcImage-00220", 20267 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 20268 }, 20269 { 20270 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221", 20271 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 20272 }, 20273 { 20274 "vuid": "VUID-vkCmdBlitImage-dstImage-02000", 20275 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_DST_BIT</code>" 20276 }, 20277 { 20278 "vuid": "VUID-vkCmdBlitImage-dstImage-00224", 20279 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 20280 }, 20281 { 20282 "vuid": "VUID-vkCmdBlitImage-dstImage-00225", 20283 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 20284 }, 20285 { 20286 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226", 20287 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 20288 }, 20289 { 20290 "vuid": "VUID-vkCmdBlitImage-srcImage-00229", 20291 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a signed integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with a signed integer <a href=\"#VkFormat\">VkFormat</a>" 20292 }, 20293 { 20294 "vuid": "VUID-vkCmdBlitImage-srcImage-00230", 20295 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>" 20296 }, 20297 { 20298 "vuid": "VUID-vkCmdBlitImage-srcImage-00231", 20299 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a depth/stencil format, the other <strong class=\"purple\">must</strong> have exactly the same format" 20300 }, 20301 { 20302 "vuid": "VUID-vkCmdBlitImage-srcImage-00232", 20303 "text": " If <code>srcImage</code> was created with a depth/stencil format, <code>filter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>" 20304 }, 20305 { 20306 "vuid": "VUID-vkCmdBlitImage-srcImage-00233", 20307 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>" 20308 }, 20309 { 20310 "vuid": "VUID-vkCmdBlitImage-dstImage-00234", 20311 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>" 20312 }, 20313 { 20314 "vuid": "VUID-vkCmdBlitImage-filter-02001", 20315 "text": " If <code>filter</code> is <code>VK_FILTER_LINEAR</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 20316 }, 20317 { 20318 "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705", 20319 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 20320 }, 20321 { 20322 "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706", 20323 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 20324 }, 20325 { 20326 "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707", 20327 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 20328 }, 20329 { 20330 "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708", 20331 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 20332 }, 20333 { 20334 "vuid": "VUID-vkCmdBlitImage-srcImage-00240", 20335 "text": " If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>." 20336 }, 20337 { 20338 "vuid": "VUID-vkCmdBlitImage-aspectMask-00241", 20339 "text": " For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>" 20340 }, 20341 { 20342 "vuid": "VUID-vkCmdBlitImage-aspectMask-00242", 20343 "text": " For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>" 20344 }, 20345 { 20346 "vuid": "VUID-vkCmdBlitImage-srcOffset-00243", 20347 "text": " For each element of <code>pRegions</code>, <code>srcOffset</code>[0].x and <code>srcOffset</code>[1].x <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20348 }, 20349 { 20350 "vuid": "VUID-vkCmdBlitImage-srcOffset-00244", 20351 "text": " For each element of <code>pRegions</code>, <code>srcOffset</code>[0].y and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20352 }, 20353 { 20354 "vuid": "VUID-vkCmdBlitImage-srcImage-00245", 20355 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>" 20356 }, 20357 { 20358 "vuid": "VUID-vkCmdBlitImage-srcOffset-00246", 20359 "text": " For each element of <code>pRegions</code>, <code>srcOffset</code>[0].z and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20360 }, 20361 { 20362 "vuid": "VUID-vkCmdBlitImage-srcImage-00247", 20363 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>" 20364 }, 20365 { 20366 "vuid": "VUID-vkCmdBlitImage-dstOffset-00248", 20367 "text": " For each element of <code>pRegions</code>, <code>dstOffset</code>[0].x and <code>dstOffset</code>[1].x <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20368 }, 20369 { 20370 "vuid": "VUID-vkCmdBlitImage-dstOffset-00249", 20371 "text": " For each element of <code>pRegions</code>, <code>dstOffset</code>[0].y and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20372 }, 20373 { 20374 "vuid": "VUID-vkCmdBlitImage-dstImage-00250", 20375 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>" 20376 }, 20377 { 20378 "vuid": "VUID-vkCmdBlitImage-dstOffset-00251", 20379 "text": " For each element of <code>pRegions</code>, <code>dstOffset</code>[0].z and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20380 }, 20381 { 20382 "vuid": "VUID-vkCmdBlitImage-dstImage-00252", 20383 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>" 20384 }, 20385 { 20386 "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter", 20387 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 20388 }, 20389 { 20390 "vuid": "VUID-vkCmdBlitImage-srcImage-parameter", 20391 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 20392 }, 20393 { 20394 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter", 20395 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 20396 }, 20397 { 20398 "vuid": "VUID-vkCmdBlitImage-dstImage-parameter", 20399 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 20400 }, 20401 { 20402 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter", 20403 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 20404 }, 20405 { 20406 "vuid": "VUID-vkCmdBlitImage-pRegions-parameter", 20407 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageBlit\">VkImageBlit</a> structures" 20408 }, 20409 { 20410 "vuid": "VUID-vkCmdBlitImage-filter-parameter", 20411 "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 20412 }, 20413 { 20414 "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording", 20415 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 20416 }, 20417 { 20418 "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool", 20419 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 20420 }, 20421 { 20422 "vuid": "VUID-vkCmdBlitImage-renderpass", 20423 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 20424 }, 20425 { 20426 "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength", 20427 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 20428 }, 20429 { 20430 "vuid": "VUID-vkCmdBlitImage-commonparent", 20431 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 20432 } 20433 ], 20434 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 20435 { 20436 "vuid": "VUID-vkCmdBlitImage-srcImage-01561", 20437 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>" 20438 }, 20439 { 20440 "vuid": "VUID-vkCmdBlitImage-dstImage-01562", 20441 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>" 20442 } 20443 ], 20444 "!(VK_KHR_shared_presentable_image)": [ 20445 { 20446 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222", 20447 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20448 }, 20449 { 20450 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227", 20451 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20452 } 20453 ], 20454 "(VK_KHR_shared_presentable_image)": [ 20455 { 20456 "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398", 20457 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20458 }, 20459 { 20460 "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399", 20461 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20462 } 20463 ], 20464 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 20465 { 20466 "vuid": "VUID-vkCmdBlitImage-filter-02002", 20467 "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 20468 }, 20469 { 20470 "vuid": "VUID-vkCmdBlitImage-filter-00237", 20471 "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>" 20472 } 20473 ], 20474 "(VK_EXT_fragment_density_map)": [ 20475 { 20476 "vuid": "VUID-vkCmdBlitImage-dstImage-02545", 20477 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 20478 } 20479 ] 20480 }, 20481 "VkImageBlit": { 20482 "core": [ 20483 { 20484 "vuid": "VUID-VkImageBlit-aspectMask-00238", 20485 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 20486 }, 20487 { 20488 "vuid": "VUID-VkImageBlit-layerCount-00239", 20489 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 20490 }, 20491 { 20492 "vuid": "VUID-VkImageBlit-srcSubresource-parameter", 20493 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 20494 }, 20495 { 20496 "vuid": "VUID-VkImageBlit-dstSubresource-parameter", 20497 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 20498 } 20499 ] 20500 }, 20501 "vkCmdBlitImage2KHR": { 20502 "(VK_VERSION_1_1)": [ 20503 { 20504 "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-01834", 20505 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 20506 }, 20507 { 20508 "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-01835", 20509 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 20510 }, 20511 { 20512 "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-01836", 20513 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 20514 } 20515 ], 20516 "(VK_KHR_copy_commands2)": [ 20517 { 20518 "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-parameter", 20519 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 20520 }, 20521 { 20522 "vuid": "VUID-vkCmdBlitImage2KHR-pBlitImageInfo-parameter", 20523 "text": " <code>pBlitImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkBlitImageInfo2KHR\">VkBlitImageInfo2KHR</a> structure" 20524 }, 20525 { 20526 "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-recording", 20527 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 20528 }, 20529 { 20530 "vuid": "VUID-vkCmdBlitImage2KHR-commandBuffer-cmdpool", 20531 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 20532 }, 20533 { 20534 "vuid": "VUID-vkCmdBlitImage2KHR-renderpass", 20535 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 20536 } 20537 ] 20538 }, 20539 "VkBlitImageInfo2KHR": { 20540 "core": [ 20541 { 20542 "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-00215", 20543 "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>" 20544 }, 20545 { 20546 "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-00216", 20547 "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>" 20548 }, 20549 { 20550 "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-00217", 20551 "text": " The union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory with any texel that <strong class=\"purple\">may</strong> be sampled during the blit operation" 20552 }, 20553 { 20554 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-01999", 20555 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_SRC_BIT</code>" 20556 }, 20557 { 20558 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00219", 20559 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag" 20560 }, 20561 { 20562 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00220", 20563 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 20564 }, 20565 { 20566 "vuid": "VUID-VkBlitImageInfo2KHR-srcImageLayout-00221", 20567 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 20568 }, 20569 { 20570 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-02000", 20571 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_DST_BIT</code>" 20572 }, 20573 { 20574 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00224", 20575 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag" 20576 }, 20577 { 20578 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00225", 20579 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 20580 }, 20581 { 20582 "vuid": "VUID-VkBlitImageInfo2KHR-dstImageLayout-00226", 20583 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 20584 }, 20585 { 20586 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00229", 20587 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a signed integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with a signed integer <a href=\"#VkFormat\">VkFormat</a>" 20588 }, 20589 { 20590 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00230", 20591 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>" 20592 }, 20593 { 20594 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00231", 20595 "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a depth/stencil format, the other <strong class=\"purple\">must</strong> have exactly the same format" 20596 }, 20597 { 20598 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00232", 20599 "text": " If <code>srcImage</code> was created with a depth/stencil format, <code>filter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>" 20600 }, 20601 { 20602 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00233", 20603 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>" 20604 }, 20605 { 20606 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00234", 20607 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>" 20608 }, 20609 { 20610 "vuid": "VUID-VkBlitImageInfo2KHR-filter-02001", 20611 "text": " If <code>filter</code> is <code>VK_FILTER_LINEAR</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 20612 }, 20613 { 20614 "vuid": "VUID-VkBlitImageInfo2KHR-srcSubresource-01705", 20615 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 20616 }, 20617 { 20618 "vuid": "VUID-VkBlitImageInfo2KHR-dstSubresource-01706", 20619 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 20620 }, 20621 { 20622 "vuid": "VUID-VkBlitImageInfo2KHR-srcSubresource-01707", 20623 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 20624 }, 20625 { 20626 "vuid": "VUID-VkBlitImageInfo2KHR-dstSubresource-01708", 20627 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 20628 }, 20629 { 20630 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00240", 20631 "text": " If either <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> and <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> each be <code>0</code>, and <code>srcSubresource.layerCount</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> each be <code>1</code>." 20632 }, 20633 { 20634 "vuid": "VUID-VkBlitImageInfo2KHR-aspectMask-00241", 20635 "text": " For each element of <code>pRegions</code>, <code>srcSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>srcImage</code>" 20636 }, 20637 { 20638 "vuid": "VUID-VkBlitImageInfo2KHR-aspectMask-00242", 20639 "text": " For each element of <code>pRegions</code>, <code>dstSubresource.aspectMask</code> <strong class=\"purple\">must</strong> specify aspects present in <code>dstImage</code>" 20640 }, 20641 { 20642 "vuid": "VUID-VkBlitImageInfo2KHR-srcOffset-00243", 20643 "text": " For each element of <code>pRegions</code>, <code>srcOffset</code>[0].x and <code>srcOffset</code>[1].x <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20644 }, 20645 { 20646 "vuid": "VUID-VkBlitImageInfo2KHR-srcOffset-00244", 20647 "text": " For each element of <code>pRegions</code>, <code>srcOffset</code>[0].y and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20648 }, 20649 { 20650 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00245", 20651 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>" 20652 }, 20653 { 20654 "vuid": "VUID-VkBlitImageInfo2KHR-srcOffset-00246", 20655 "text": " For each element of <code>pRegions</code>, <code>srcOffset</code>[0].z and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20656 }, 20657 { 20658 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-00247", 20659 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>" 20660 }, 20661 { 20662 "vuid": "VUID-VkBlitImageInfo2KHR-dstOffset-00248", 20663 "text": " For each element of <code>pRegions</code>, <code>dstOffset</code>[0].x and <code>dstOffset</code>[1].x <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20664 }, 20665 { 20666 "vuid": "VUID-VkBlitImageInfo2KHR-dstOffset-00249", 20667 "text": " For each element of <code>pRegions</code>, <code>dstOffset</code>[0].y and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20668 }, 20669 { 20670 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00250", 20671 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>" 20672 }, 20673 { 20674 "vuid": "VUID-VkBlitImageInfo2KHR-dstOffset-00251", 20675 "text": " For each element of <code>pRegions</code>, <code>dstOffset</code>[0].z and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20676 }, 20677 { 20678 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-00252", 20679 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>" 20680 } 20681 ], 20682 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 20683 { 20684 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-01561", 20685 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>" 20686 }, 20687 { 20688 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-01562", 20689 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y′C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>" 20690 } 20691 ], 20692 "!(VK_KHR_shared_presentable_image)": [ 20693 { 20694 "vuid": "VUID-VkBlitImageInfo2KHR-srcImageLayout-00222", 20695 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20696 }, 20697 { 20698 "vuid": "VUID-VkBlitImageInfo2KHR-dstImageLayout-00227", 20699 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20700 } 20701 ], 20702 "(VK_KHR_shared_presentable_image)": [ 20703 { 20704 "vuid": "VUID-VkBlitImageInfo2KHR-srcImageLayout-01398", 20705 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20706 }, 20707 { 20708 "vuid": "VUID-VkBlitImageInfo2KHR-dstImageLayout-01399", 20709 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20710 } 20711 ], 20712 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 20713 { 20714 "vuid": "VUID-VkBlitImageInfo2KHR-filter-02002", 20715 "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 20716 }, 20717 { 20718 "vuid": "VUID-VkBlitImageInfo2KHR-filter-00237", 20719 "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> be of type <code>VK_IMAGE_TYPE_2D</code>" 20720 } 20721 ], 20722 "(VK_EXT_fragment_density_map)": [ 20723 { 20724 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-02545", 20725 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 20726 } 20727 ], 20728 "(VK_KHR_copy_commands2)": [ 20729 { 20730 "vuid": "VUID-VkBlitImageInfo2KHR-sType-sType", 20731 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR</code>" 20732 }, 20733 { 20734 "vuid": "VUID-VkBlitImageInfo2KHR-pNext-pNext", 20735 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20736 }, 20737 { 20738 "vuid": "VUID-VkBlitImageInfo2KHR-srcImage-parameter", 20739 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 20740 }, 20741 { 20742 "vuid": "VUID-VkBlitImageInfo2KHR-srcImageLayout-parameter", 20743 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 20744 }, 20745 { 20746 "vuid": "VUID-VkBlitImageInfo2KHR-dstImage-parameter", 20747 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 20748 }, 20749 { 20750 "vuid": "VUID-VkBlitImageInfo2KHR-dstImageLayout-parameter", 20751 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 20752 }, 20753 { 20754 "vuid": "VUID-VkBlitImageInfo2KHR-pRegions-parameter", 20755 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageBlit2KHR\">VkImageBlit2KHR</a> structures" 20756 }, 20757 { 20758 "vuid": "VUID-VkBlitImageInfo2KHR-filter-parameter", 20759 "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value" 20760 }, 20761 { 20762 "vuid": "VUID-VkBlitImageInfo2KHR-regionCount-arraylength", 20763 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 20764 }, 20765 { 20766 "vuid": "VUID-VkBlitImageInfo2KHR-commonparent", 20767 "text": " Both of <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 20768 } 20769 ] 20770 }, 20771 "VkImageBlit2KHR": { 20772 "core": [ 20773 { 20774 "vuid": "VUID-VkImageBlit2KHR-aspectMask-00238", 20775 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 20776 }, 20777 { 20778 "vuid": "VUID-VkImageBlit2KHR-layerCount-00239", 20779 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 20780 } 20781 ], 20782 "(VK_KHR_copy_commands2)": [ 20783 { 20784 "vuid": "VUID-VkImageBlit2KHR-sType-sType", 20785 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR</code>" 20786 }, 20787 { 20788 "vuid": "VUID-VkImageBlit2KHR-pNext-pNext", 20789 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 20790 }, 20791 { 20792 "vuid": "VUID-VkImageBlit2KHR-srcSubresource-parameter", 20793 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 20794 }, 20795 { 20796 "vuid": "VUID-VkImageBlit2KHR-dstSubresource-parameter", 20797 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 20798 } 20799 ] 20800 }, 20801 "vkCmdResolveImage": { 20802 "(VK_VERSION_1_1)": [ 20803 { 20804 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837", 20805 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 20806 }, 20807 { 20808 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838", 20809 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 20810 }, 20811 { 20812 "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839", 20813 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 20814 } 20815 ], 20816 "core": [ 20817 { 20818 "vuid": "VUID-vkCmdResolveImage-pRegions-00255", 20819 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 20820 }, 20821 { 20822 "vuid": "VUID-vkCmdResolveImage-srcImage-00256", 20823 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 20824 }, 20825 { 20826 "vuid": "VUID-vkCmdResolveImage-srcImage-00257", 20827 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to any valid sample count value other than <code>VK_SAMPLE_COUNT_1_BIT</code>" 20828 }, 20829 { 20830 "vuid": "VUID-vkCmdResolveImage-dstImage-00258", 20831 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 20832 }, 20833 { 20834 "vuid": "VUID-vkCmdResolveImage-dstImage-00259", 20835 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 20836 }, 20837 { 20838 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260", 20839 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 20840 }, 20841 { 20842 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262", 20843 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 20844 }, 20845 { 20846 "vuid": "VUID-vkCmdResolveImage-dstImage-02003", 20847 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 20848 }, 20849 { 20850 "vuid": "VUID-vkCmdResolveImage-srcImage-01386", 20851 "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format" 20852 }, 20853 { 20854 "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709", 20855 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 20856 }, 20857 { 20858 "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710", 20859 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 20860 }, 20861 { 20862 "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711", 20863 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 20864 }, 20865 { 20866 "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712", 20867 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 20868 }, 20869 { 20870 "vuid": "VUID-vkCmdResolveImage-srcImage-04446", 20871 "text": " If either <code>srcImage</code> or <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20872 }, 20873 { 20874 "vuid": "VUID-vkCmdResolveImage-srcImage-04447", 20875 "text": " If either <code>srcImage</code> or <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20876 }, 20877 { 20878 "vuid": "VUID-vkCmdResolveImage-srcOffset-00269", 20879 "text": " For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20880 }, 20881 { 20882 "vuid": "VUID-vkCmdResolveImage-srcOffset-00270", 20883 "text": " For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20884 }, 20885 { 20886 "vuid": "VUID-vkCmdResolveImage-srcImage-00271", 20887 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20888 }, 20889 { 20890 "vuid": "VUID-vkCmdResolveImage-srcOffset-00272", 20891 "text": " For each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>" 20892 }, 20893 { 20894 "vuid": "VUID-vkCmdResolveImage-srcImage-00273", 20895 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20896 }, 20897 { 20898 "vuid": "VUID-vkCmdResolveImage-dstOffset-00274", 20899 "text": " For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20900 }, 20901 { 20902 "vuid": "VUID-vkCmdResolveImage-dstOffset-00275", 20903 "text": " For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20904 }, 20905 { 20906 "vuid": "VUID-vkCmdResolveImage-dstImage-00276", 20907 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20908 }, 20909 { 20910 "vuid": "VUID-vkCmdResolveImage-dstOffset-00277", 20911 "text": " For each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>" 20912 }, 20913 { 20914 "vuid": "VUID-vkCmdResolveImage-dstImage-00278", 20915 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 20916 }, 20917 { 20918 "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter", 20919 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 20920 }, 20921 { 20922 "vuid": "VUID-vkCmdResolveImage-srcImage-parameter", 20923 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 20924 }, 20925 { 20926 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter", 20927 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 20928 }, 20929 { 20930 "vuid": "VUID-vkCmdResolveImage-dstImage-parameter", 20931 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 20932 }, 20933 { 20934 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter", 20935 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 20936 }, 20937 { 20938 "vuid": "VUID-vkCmdResolveImage-pRegions-parameter", 20939 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageResolve\">VkImageResolve</a> structures" 20940 }, 20941 { 20942 "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording", 20943 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 20944 }, 20945 { 20946 "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool", 20947 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 20948 }, 20949 { 20950 "vuid": "VUID-vkCmdResolveImage-renderpass", 20951 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 20952 }, 20953 { 20954 "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength", 20955 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 20956 }, 20957 { 20958 "vuid": "VUID-vkCmdResolveImage-commonparent", 20959 "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 20960 } 20961 ], 20962 "!(VK_KHR_shared_presentable_image)": [ 20963 { 20964 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261", 20965 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20966 }, 20967 { 20968 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263", 20969 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20970 } 20971 ], 20972 "(VK_KHR_shared_presentable_image)": [ 20973 { 20974 "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400", 20975 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20976 }, 20977 { 20978 "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401", 20979 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 20980 } 20981 ], 20982 "(VK_EXT_fragment_density_map)": [ 20983 { 20984 "vuid": "VUID-vkCmdResolveImage-dstImage-02546", 20985 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 20986 } 20987 ] 20988 }, 20989 "VkImageResolve": { 20990 "core": [ 20991 { 20992 "vuid": "VUID-VkImageResolve-aspectMask-00266", 20993 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> only contain <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 20994 }, 20995 { 20996 "vuid": "VUID-VkImageResolve-layerCount-00267", 20997 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 20998 }, 20999 { 21000 "vuid": "VUID-VkImageResolve-srcSubresource-parameter", 21001 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 21002 }, 21003 { 21004 "vuid": "VUID-VkImageResolve-dstSubresource-parameter", 21005 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 21006 } 21007 ] 21008 }, 21009 "vkCmdWriteBufferMarkerAMD": { 21010 "core": [ 21011 { 21012 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04074", 21013 "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a <a href=\"#synchronization-pipeline-stages-supported\">valid stage</a> for the queue family that was used to create the command pool that <code>commandBuffer</code> was allocated from" 21014 }, 21015 { 21016 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04075", 21017 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>" 21018 }, 21019 { 21020 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04076", 21021 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>" 21022 }, 21023 { 21024 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798", 21025 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>4</code>" 21026 }, 21027 { 21028 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799", 21029 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag" 21030 }, 21031 { 21032 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800", 21033 "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 21034 }, 21035 { 21036 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801", 21037 "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 21038 } 21039 ], 21040 "(VK_EXT_conditional_rendering)": [ 21041 { 21042 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04077", 21043 "text": " If the <a href=\"#features-conditionalRendering\">conditional rendering</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT</code>" 21044 } 21045 ], 21046 "(VK_EXT_fragment_density_map)": [ 21047 { 21048 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04078", 21049 "text": " If the <a href=\"#features-fragmentDensityMap\">fragment density map</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT</code>" 21050 } 21051 ], 21052 "(VK_EXT_transform_feedback)": [ 21053 { 21054 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04079", 21055 "text": " If the <a href=\"#features-transformFeedback\">transform feedback</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT</code>" 21056 } 21057 ], 21058 "(VK_NV_mesh_shader)": [ 21059 { 21060 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04080", 21061 "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code> or <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>" 21062 } 21063 ], 21064 "(VK_NV_shading_rate_image)": [ 21065 { 21066 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04081", 21067 "text": " If the <a href=\"#features-shadingRateImage\">shading rate image</a> feature is not enabled, <code>pipelineStage</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 21068 } 21069 ], 21070 "(VK_AMD_buffer_marker)": [ 21071 { 21072 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter", 21073 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 21074 }, 21075 { 21076 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter", 21077 "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value" 21078 }, 21079 { 21080 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter", 21081 "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 21082 }, 21083 { 21084 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording", 21085 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 21086 }, 21087 { 21088 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool", 21089 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations" 21090 }, 21091 { 21092 "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent", 21093 "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 21094 } 21095 ] 21096 }, 21097 "vkCmdResolveImage2KHR": { 21098 "(VK_VERSION_1_1)": [ 21099 { 21100 "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-01837", 21101 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image" 21102 }, 21103 { 21104 "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-01838", 21105 "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image" 21106 }, 21107 { 21108 "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-01839", 21109 "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image" 21110 } 21111 ], 21112 "(VK_KHR_copy_commands2)": [ 21113 { 21114 "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-parameter", 21115 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 21116 }, 21117 { 21118 "vuid": "VUID-vkCmdResolveImage2KHR-pResolveImageInfo-parameter", 21119 "text": " <code>pResolveImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkResolveImageInfo2KHR\">VkResolveImageInfo2KHR</a> structure" 21120 }, 21121 { 21122 "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-recording", 21123 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 21124 }, 21125 { 21126 "vuid": "VUID-vkCmdResolveImage2KHR-commandBuffer-cmdpool", 21127 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 21128 }, 21129 { 21130 "vuid": "VUID-vkCmdResolveImage2KHR-renderpass", 21131 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 21132 } 21133 ] 21134 }, 21135 "VkResolveImageInfo2KHR": { 21136 "core": [ 21137 { 21138 "vuid": "VUID-VkResolveImageInfo2KHR-pRegions-00255", 21139 "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory" 21140 }, 21141 { 21142 "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-00256", 21143 "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 21144 }, 21145 { 21146 "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-00257", 21147 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to any valid sample count value other than <code>VK_SAMPLE_COUNT_1_BIT</code>" 21148 }, 21149 { 21150 "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-00258", 21151 "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 21152 }, 21153 { 21154 "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-00259", 21155 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>" 21156 }, 21157 { 21158 "vuid": "VUID-VkResolveImageInfo2KHR-srcImageLayout-00260", 21159 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 21160 }, 21161 { 21162 "vuid": "VUID-VkResolveImageInfo2KHR-dstImageLayout-00262", 21163 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>" 21164 }, 21165 { 21166 "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-02003", 21167 "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>" 21168 }, 21169 { 21170 "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-01386", 21171 "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format" 21172 }, 21173 { 21174 "vuid": "VUID-VkResolveImageInfo2KHR-srcSubresource-01709", 21175 "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 21176 }, 21177 { 21178 "vuid": "VUID-VkResolveImageInfo2KHR-dstSubresource-01710", 21179 "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 21180 }, 21181 { 21182 "vuid": "VUID-VkResolveImageInfo2KHR-srcSubresource-01711", 21183 "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> + <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created" 21184 }, 21185 { 21186 "vuid": "VUID-VkResolveImageInfo2KHR-dstSubresource-01712", 21187 "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> + <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created" 21188 }, 21189 { 21190 "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-04446", 21191 "text": " If either <code>srcImage</code> or <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>srcSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 21192 }, 21193 { 21194 "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-04447", 21195 "text": " If either <code>srcImage</code> or <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_3D</code>, then for each element of <code>pRegions</code>, <code>dstSubresource.baseArrayLayer</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstSubresource.layerCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 21196 }, 21197 { 21198 "vuid": "VUID-VkResolveImageInfo2KHR-srcOffset-00269", 21199 "text": " For each element of <code>pRegions</code>, <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>srcSubresource</code> of <code>srcImage</code>" 21200 }, 21201 { 21202 "vuid": "VUID-VkResolveImageInfo2KHR-srcOffset-00270", 21203 "text": " For each element of <code>pRegions</code>, <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>srcSubresource</code> of <code>srcImage</code>" 21204 }, 21205 { 21206 "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-00271", 21207 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 21208 }, 21209 { 21210 "vuid": "VUID-VkResolveImageInfo2KHR-srcOffset-00272", 21211 "text": " For each element of <code>pRegions</code>, <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>srcSubresource</code> of <code>srcImage</code>" 21212 }, 21213 { 21214 "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-00273", 21215 "text": " If <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 21216 }, 21217 { 21218 "vuid": "VUID-VkResolveImageInfo2KHR-dstOffset-00274", 21219 "text": " For each element of <code>pRegions</code>, <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> + <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the width of the specified <code>dstSubresource</code> of <code>dstImage</code>" 21220 }, 21221 { 21222 "vuid": "VUID-VkResolveImageInfo2KHR-dstOffset-00275", 21223 "text": " For each element of <code>pRegions</code>, <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> + <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the height of the specified <code>dstSubresource</code> of <code>dstImage</code>" 21224 }, 21225 { 21226 "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-00276", 21227 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 21228 }, 21229 { 21230 "vuid": "VUID-VkResolveImageInfo2KHR-dstOffset-00277", 21231 "text": " For each element of <code>pRegions</code>, <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> + <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the depth of the specified <code>dstSubresource</code> of <code>dstImage</code>" 21232 }, 21233 { 21234 "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-00278", 21235 "text": " If <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then for each element of <code>pRegions</code>, <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>" 21236 } 21237 ], 21238 "!(VK_KHR_shared_presentable_image)": [ 21239 { 21240 "vuid": "VUID-VkResolveImageInfo2KHR-srcImageLayout-00261", 21241 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 21242 }, 21243 { 21244 "vuid": "VUID-VkResolveImageInfo2KHR-dstImageLayout-00263", 21245 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 21246 } 21247 ], 21248 "(VK_KHR_shared_presentable_image)": [ 21249 { 21250 "vuid": "VUID-VkResolveImageInfo2KHR-srcImageLayout-01400", 21251 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 21252 }, 21253 { 21254 "vuid": "VUID-VkResolveImageInfo2KHR-dstImageLayout-01401", 21255 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 21256 } 21257 ], 21258 "(VK_EXT_fragment_density_map)": [ 21259 { 21260 "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-02546", 21261 "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>" 21262 } 21263 ], 21264 "(VK_KHR_copy_commands2)": [ 21265 { 21266 "vuid": "VUID-VkResolveImageInfo2KHR-sType-sType", 21267 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR</code>" 21268 }, 21269 { 21270 "vuid": "VUID-VkResolveImageInfo2KHR-pNext-pNext", 21271 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 21272 }, 21273 { 21274 "vuid": "VUID-VkResolveImageInfo2KHR-srcImage-parameter", 21275 "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 21276 }, 21277 { 21278 "vuid": "VUID-VkResolveImageInfo2KHR-srcImageLayout-parameter", 21279 "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 21280 }, 21281 { 21282 "vuid": "VUID-VkResolveImageInfo2KHR-dstImage-parameter", 21283 "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 21284 }, 21285 { 21286 "vuid": "VUID-VkResolveImageInfo2KHR-dstImageLayout-parameter", 21287 "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 21288 }, 21289 { 21290 "vuid": "VUID-VkResolveImageInfo2KHR-pRegions-parameter", 21291 "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <a href=\"#VkImageResolve2KHR\">VkImageResolve2KHR</a> structures" 21292 }, 21293 { 21294 "vuid": "VUID-VkResolveImageInfo2KHR-regionCount-arraylength", 21295 "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 21296 }, 21297 { 21298 "vuid": "VUID-VkResolveImageInfo2KHR-commonparent", 21299 "text": " Both of <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 21300 } 21301 ] 21302 }, 21303 "VkImageResolve2KHR": { 21304 "core": [ 21305 { 21306 "vuid": "VUID-VkImageResolve2KHR-aspectMask-00266", 21307 "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> only contain <code>VK_IMAGE_ASPECT_COLOR_BIT</code>" 21308 }, 21309 { 21310 "vuid": "VUID-VkImageResolve2KHR-layerCount-00267", 21311 "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match" 21312 } 21313 ], 21314 "(VK_KHR_copy_commands2)": [ 21315 { 21316 "vuid": "VUID-VkImageResolve2KHR-sType-sType", 21317 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR</code>" 21318 }, 21319 { 21320 "vuid": "VUID-VkImageResolve2KHR-pNext-pNext", 21321 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 21322 }, 21323 { 21324 "vuid": "VUID-VkImageResolve2KHR-srcSubresource-parameter", 21325 "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 21326 }, 21327 { 21328 "vuid": "VUID-VkImageResolve2KHR-dstSubresource-parameter", 21329 "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresourceLayers\">VkImageSubresourceLayers</a> structure" 21330 } 21331 ] 21332 }, 21333 "VkPipelineInputAssemblyStateCreateInfo": { 21334 "core": [ 21335 { 21336 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428", 21337 "text": " If <code>topology</code> is <code>VK_PRIMITIVE_TOPOLOGY_POINT_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>primitiveRestartEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 21338 }, 21339 { 21340 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429", 21341 "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be any of <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY</code>" 21342 }, 21343 { 21344 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430", 21345 "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>" 21346 }, 21347 { 21348 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType", 21349 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>" 21350 }, 21351 { 21352 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext", 21353 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 21354 }, 21355 { 21356 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask", 21357 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 21358 }, 21359 { 21360 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter", 21361 "text": " <code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value" 21362 } 21363 ], 21364 "(VK_KHR_portability_subset)": [ 21365 { 21366 "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-triangleFans-04452", 21367 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>triangleFans</code> is <code>VK_FALSE</code>, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN</code>." 21368 } 21369 ] 21370 }, 21371 "vkCmdSetPrimitiveTopologyEXT": { 21372 "(VK_EXT_extended_dynamic_state)": [ 21373 { 21374 "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-None-03347", 21375 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 21376 }, 21377 { 21378 "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-parameter", 21379 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 21380 }, 21381 { 21382 "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-primitiveTopology-parameter", 21383 "text": " <code>primitiveTopology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value" 21384 }, 21385 { 21386 "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-recording", 21387 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 21388 }, 21389 { 21390 "vuid": "VUID-vkCmdSetPrimitiveTopologyEXT-commandBuffer-cmdpool", 21391 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 21392 } 21393 ] 21394 }, 21395 "vkCmdBindIndexBuffer": { 21396 "core": [ 21397 { 21398 "vuid": "VUID-vkCmdBindIndexBuffer-offset-00431", 21399 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 21400 }, 21401 { 21402 "vuid": "VUID-vkCmdBindIndexBuffer-offset-00432", 21403 "text": " The sum of <code>offset</code> and the address of the range of <code>VkDeviceMemory</code> object that is backing <code>buffer</code>, <strong class=\"purple\">must</strong> be a multiple of the type indicated by <code>indexType</code>" 21404 }, 21405 { 21406 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433", 21407 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag" 21408 }, 21409 { 21410 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434", 21411 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 21412 }, 21413 { 21414 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter", 21415 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 21416 }, 21417 { 21418 "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter", 21419 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 21420 }, 21421 { 21422 "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter", 21423 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value" 21424 }, 21425 { 21426 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording", 21427 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 21428 }, 21429 { 21430 "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool", 21431 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 21432 }, 21433 { 21434 "vuid": "VUID-vkCmdBindIndexBuffer-commonparent", 21435 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 21436 } 21437 ], 21438 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 21439 { 21440 "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507", 21441 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_KHR</code>" 21442 } 21443 ], 21444 "(VK_EXT_index_type_uint8)": [ 21445 { 21446 "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02765", 21447 "text": " If <code>indexType</code> is <code>VK_INDEX_TYPE_UINT8_EXT</code>, the <a href=\"#features-indexTypeUint8\">indexTypeUint8</a> feature <strong class=\"purple\">must</strong> be enabled" 21448 } 21449 ] 21450 }, 21451 "vkCmdDraw": { 21452 "core": [ 21453 { 21454 "vuid": "VUID-vkCmdDraw-magFilter-04553", 21455 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 21456 }, 21457 { 21458 "vuid": "VUID-vkCmdDraw-None-02691", 21459 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 21460 }, 21461 { 21462 "vuid": "VUID-vkCmdDraw-None-02697", 21463 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 21464 }, 21465 { 21466 "vuid": "VUID-vkCmdDraw-None-02698", 21467 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 21468 }, 21469 { 21470 "vuid": "VUID-vkCmdDraw-None-02699", 21471 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 21472 }, 21473 { 21474 "vuid": "VUID-vkCmdDraw-None-02700", 21475 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 21476 }, 21477 { 21478 "vuid": "VUID-vkCmdDraw-commandBuffer-02701", 21479 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 21480 }, 21481 { 21482 "vuid": "VUID-vkCmdDraw-None-02859", 21483 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 21484 }, 21485 { 21486 "vuid": "VUID-vkCmdDraw-None-02702", 21487 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 21488 }, 21489 { 21490 "vuid": "VUID-vkCmdDraw-None-02703", 21491 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 21492 }, 21493 { 21494 "vuid": "VUID-vkCmdDraw-None-02704", 21495 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 21496 }, 21497 { 21498 "vuid": "VUID-vkCmdDraw-None-02705", 21499 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 21500 }, 21501 { 21502 "vuid": "VUID-vkCmdDraw-None-02706", 21503 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 21504 }, 21505 { 21506 "vuid": "VUID-vkCmdDraw-None-04115", 21507 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 21508 }, 21509 { 21510 "vuid": "VUID-vkCmdDraw-OpImageWrite-04469", 21511 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 21512 }, 21513 { 21514 "vuid": "VUID-vkCmdDraw-renderPass-02684", 21515 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 21516 }, 21517 { 21518 "vuid": "VUID-vkCmdDraw-subpass-02685", 21519 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 21520 }, 21521 { 21522 "vuid": "VUID-vkCmdDraw-None-02686", 21523 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 21524 }, 21525 { 21526 "vuid": "VUID-vkCmdDraw-None-02687", 21527 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 21528 }, 21529 { 21530 "vuid": "VUID-vkCmdDraw-None-04007", 21531 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound" 21532 }, 21533 { 21534 "vuid": "VUID-vkCmdDraw-None-04008", 21535 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 21536 }, 21537 { 21538 "vuid": "VUID-vkCmdDraw-None-02721", 21539 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 21540 }, 21541 { 21542 "vuid": "VUID-vkCmdDraw-commandBuffer-parameter", 21543 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 21544 }, 21545 { 21546 "vuid": "VUID-vkCmdDraw-commandBuffer-recording", 21547 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 21548 }, 21549 { 21550 "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool", 21551 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 21552 }, 21553 { 21554 "vuid": "VUID-vkCmdDraw-renderpass", 21555 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 21556 } 21557 ], 21558 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 21559 { 21560 "vuid": "VUID-vkCmdDraw-None-02692", 21561 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 21562 } 21563 ], 21564 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 21565 { 21566 "vuid": "VUID-vkCmdDraw-None-02693", 21567 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 21568 } 21569 ], 21570 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 21571 { 21572 "vuid": "VUID-vkCmdDraw-filterCubic-02694", 21573 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 21574 }, 21575 { 21576 "vuid": "VUID-vkCmdDraw-filterCubicMinmax-02695", 21577 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 21578 } 21579 ], 21580 "(VK_NV_corner_sampled_image)": [ 21581 { 21582 "vuid": "VUID-vkCmdDraw-flags-02696", 21583 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 21584 } 21585 ], 21586 "(VK_VERSION_1_1)": [ 21587 { 21588 "vuid": "VUID-vkCmdDraw-commandBuffer-02707", 21589 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 21590 }, 21591 { 21592 "vuid": "VUID-vkCmdDraw-commandBuffer-02712", 21593 "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource" 21594 }, 21595 { 21596 "vuid": "VUID-vkCmdDraw-commandBuffer-02713", 21597 "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource" 21598 } 21599 ], 21600 "(VK_EXT_shader_image_atomic_int64)": [ 21601 { 21602 "vuid": "VUID-vkCmdDraw-SampledType-04470", 21603 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 21604 }, 21605 { 21606 "vuid": "VUID-vkCmdDraw-SampledType-04471", 21607 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 21608 }, 21609 { 21610 "vuid": "VUID-vkCmdDraw-SampledType-04472", 21611 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 21612 }, 21613 { 21614 "vuid": "VUID-vkCmdDraw-SampledType-04473", 21615 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 21616 }, 21617 { 21618 "vuid": "VUID-vkCmdDraw-sparseImageInt64Atomics-04474", 21619 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 21620 }, 21621 { 21622 "vuid": "VUID-vkCmdDraw-sparseImageInt64Atomics-04475", 21623 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 21624 } 21625 ], 21626 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 21627 { 21628 "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-02688", 21629 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 21630 } 21631 ], 21632 "(VK_EXT_sample_locations)": [ 21633 { 21634 "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-02689", 21635 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 21636 } 21637 ], 21638 "(VK_EXT_extended_dynamic_state)": [ 21639 { 21640 "vuid": "VUID-vkCmdDraw-viewportCount-03417", 21641 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 21642 }, 21643 { 21644 "vuid": "VUID-vkCmdDraw-scissorCount-03418", 21645 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 21646 }, 21647 { 21648 "vuid": "VUID-vkCmdDraw-viewportCount-03419", 21649 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 21650 }, 21651 { 21652 "vuid": "VUID-vkCmdDraw-primitiveTopology-03420", 21653 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 21654 } 21655 ], 21656 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 21657 { 21658 "vuid": "VUID-vkCmdDraw-viewportCount-04137", 21659 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21660 }, 21661 { 21662 "vuid": "VUID-vkCmdDraw-viewportCount-04138", 21663 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21664 } 21665 ], 21666 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 21667 { 21668 "vuid": "VUID-vkCmdDraw-viewportCount-04139", 21669 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21670 }, 21671 { 21672 "vuid": "VUID-vkCmdDraw-viewportCount-04140", 21673 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21674 } 21675 ], 21676 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 21677 { 21678 "vuid": "VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04141", 21679 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21680 } 21681 ], 21682 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 21683 { 21684 "vuid": "VUID-vkCmdDraw-VkPipelineVieportCreateInfo-04142", 21685 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21686 } 21687 ], 21688 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 21689 { 21690 "vuid": "VUID-vkCmdDraw-primitiveFragmentShadingRateWithMultipleViewports-04552", 21691 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 21692 } 21693 ] 21694 }, 21695 "vkCmdDrawIndexed": { 21696 "core": [ 21697 { 21698 "vuid": "VUID-vkCmdDrawIndexed-magFilter-04553", 21699 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 21700 }, 21701 { 21702 "vuid": "VUID-vkCmdDrawIndexed-None-02691", 21703 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 21704 }, 21705 { 21706 "vuid": "VUID-vkCmdDrawIndexed-None-02697", 21707 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 21708 }, 21709 { 21710 "vuid": "VUID-vkCmdDrawIndexed-None-02698", 21711 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 21712 }, 21713 { 21714 "vuid": "VUID-vkCmdDrawIndexed-None-02699", 21715 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 21716 }, 21717 { 21718 "vuid": "VUID-vkCmdDrawIndexed-None-02700", 21719 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 21720 }, 21721 { 21722 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02701", 21723 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 21724 }, 21725 { 21726 "vuid": "VUID-vkCmdDrawIndexed-None-02859", 21727 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 21728 }, 21729 { 21730 "vuid": "VUID-vkCmdDrawIndexed-None-02702", 21731 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 21732 }, 21733 { 21734 "vuid": "VUID-vkCmdDrawIndexed-None-02703", 21735 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 21736 }, 21737 { 21738 "vuid": "VUID-vkCmdDrawIndexed-None-02704", 21739 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 21740 }, 21741 { 21742 "vuid": "VUID-vkCmdDrawIndexed-None-02705", 21743 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 21744 }, 21745 { 21746 "vuid": "VUID-vkCmdDrawIndexed-None-02706", 21747 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 21748 }, 21749 { 21750 "vuid": "VUID-vkCmdDrawIndexed-None-04115", 21751 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 21752 }, 21753 { 21754 "vuid": "VUID-vkCmdDrawIndexed-OpImageWrite-04469", 21755 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 21756 }, 21757 { 21758 "vuid": "VUID-vkCmdDrawIndexed-renderPass-02684", 21759 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 21760 }, 21761 { 21762 "vuid": "VUID-vkCmdDrawIndexed-subpass-02685", 21763 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 21764 }, 21765 { 21766 "vuid": "VUID-vkCmdDrawIndexed-None-02686", 21767 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 21768 }, 21769 { 21770 "vuid": "VUID-vkCmdDrawIndexed-None-02687", 21771 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 21772 }, 21773 { 21774 "vuid": "VUID-vkCmdDrawIndexed-None-04007", 21775 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound" 21776 }, 21777 { 21778 "vuid": "VUID-vkCmdDrawIndexed-None-04008", 21779 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 21780 }, 21781 { 21782 "vuid": "VUID-vkCmdDrawIndexed-None-02721", 21783 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 21784 }, 21785 { 21786 "vuid": "VUID-vkCmdDrawIndexed-indexSize-00463", 21787 "text": " <span class=\"eq\">(<code>indexSize</code> {times} (<code>firstIndex</code> + <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>" 21788 }, 21789 { 21790 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter", 21791 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 21792 }, 21793 { 21794 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording", 21795 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 21796 }, 21797 { 21798 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool", 21799 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 21800 }, 21801 { 21802 "vuid": "VUID-vkCmdDrawIndexed-renderpass", 21803 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 21804 } 21805 ], 21806 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 21807 { 21808 "vuid": "VUID-vkCmdDrawIndexed-None-02692", 21809 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 21810 } 21811 ], 21812 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 21813 { 21814 "vuid": "VUID-vkCmdDrawIndexed-None-02693", 21815 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 21816 } 21817 ], 21818 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 21819 { 21820 "vuid": "VUID-vkCmdDrawIndexed-filterCubic-02694", 21821 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 21822 }, 21823 { 21824 "vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02695", 21825 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 21826 } 21827 ], 21828 "(VK_NV_corner_sampled_image)": [ 21829 { 21830 "vuid": "VUID-vkCmdDrawIndexed-flags-02696", 21831 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 21832 } 21833 ], 21834 "(VK_VERSION_1_1)": [ 21835 { 21836 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02707", 21837 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 21838 }, 21839 { 21840 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02712", 21841 "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource" 21842 }, 21843 { 21844 "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-02713", 21845 "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource" 21846 } 21847 ], 21848 "(VK_EXT_shader_image_atomic_int64)": [ 21849 { 21850 "vuid": "VUID-vkCmdDrawIndexed-SampledType-04470", 21851 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 21852 }, 21853 { 21854 "vuid": "VUID-vkCmdDrawIndexed-SampledType-04471", 21855 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 21856 }, 21857 { 21858 "vuid": "VUID-vkCmdDrawIndexed-SampledType-04472", 21859 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 21860 }, 21861 { 21862 "vuid": "VUID-vkCmdDrawIndexed-SampledType-04473", 21863 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 21864 }, 21865 { 21866 "vuid": "VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04474", 21867 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 21868 }, 21869 { 21870 "vuid": "VUID-vkCmdDrawIndexed-sparseImageInt64Atomics-04475", 21871 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 21872 } 21873 ], 21874 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 21875 { 21876 "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688", 21877 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 21878 } 21879 ], 21880 "(VK_EXT_sample_locations)": [ 21881 { 21882 "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-02689", 21883 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 21884 } 21885 ], 21886 "(VK_EXT_extended_dynamic_state)": [ 21887 { 21888 "vuid": "VUID-vkCmdDrawIndexed-viewportCount-03417", 21889 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 21890 }, 21891 { 21892 "vuid": "VUID-vkCmdDrawIndexed-scissorCount-03418", 21893 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 21894 }, 21895 { 21896 "vuid": "VUID-vkCmdDrawIndexed-viewportCount-03419", 21897 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 21898 }, 21899 { 21900 "vuid": "VUID-vkCmdDrawIndexed-primitiveTopology-03420", 21901 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 21902 } 21903 ], 21904 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 21905 { 21906 "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04137", 21907 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21908 }, 21909 { 21910 "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04138", 21911 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21912 } 21913 ], 21914 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 21915 { 21916 "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04139", 21917 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21918 }, 21919 { 21920 "vuid": "VUID-vkCmdDrawIndexed-viewportCount-04140", 21921 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21922 } 21923 ], 21924 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 21925 { 21926 "vuid": "VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04141", 21927 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21928 } 21929 ], 21930 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 21931 { 21932 "vuid": "VUID-vkCmdDrawIndexed-VkPipelineVieportCreateInfo-04142", 21933 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 21934 } 21935 ], 21936 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 21937 { 21938 "vuid": "VUID-vkCmdDrawIndexed-primitiveFragmentShadingRateWithMultipleViewports-04552", 21939 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 21940 } 21941 ] 21942 }, 21943 "vkCmdDrawIndirect": { 21944 "core": [ 21945 { 21946 "vuid": "VUID-vkCmdDrawIndirect-magFilter-04553", 21947 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 21948 }, 21949 { 21950 "vuid": "VUID-vkCmdDrawIndirect-None-02691", 21951 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 21952 }, 21953 { 21954 "vuid": "VUID-vkCmdDrawIndirect-None-02697", 21955 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 21956 }, 21957 { 21958 "vuid": "VUID-vkCmdDrawIndirect-None-02698", 21959 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 21960 }, 21961 { 21962 "vuid": "VUID-vkCmdDrawIndirect-None-02699", 21963 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 21964 }, 21965 { 21966 "vuid": "VUID-vkCmdDrawIndirect-None-02700", 21967 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 21968 }, 21969 { 21970 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02701", 21971 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 21972 }, 21973 { 21974 "vuid": "VUID-vkCmdDrawIndirect-None-02859", 21975 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 21976 }, 21977 { 21978 "vuid": "VUID-vkCmdDrawIndirect-None-02702", 21979 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 21980 }, 21981 { 21982 "vuid": "VUID-vkCmdDrawIndirect-None-02703", 21983 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 21984 }, 21985 { 21986 "vuid": "VUID-vkCmdDrawIndirect-None-02704", 21987 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 21988 }, 21989 { 21990 "vuid": "VUID-vkCmdDrawIndirect-None-02705", 21991 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 21992 }, 21993 { 21994 "vuid": "VUID-vkCmdDrawIndirect-None-02706", 21995 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 21996 }, 21997 { 21998 "vuid": "VUID-vkCmdDrawIndirect-None-04115", 21999 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 22000 }, 22001 { 22002 "vuid": "VUID-vkCmdDrawIndirect-OpImageWrite-04469", 22003 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 22004 }, 22005 { 22006 "vuid": "VUID-vkCmdDrawIndirect-renderPass-02684", 22007 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 22008 }, 22009 { 22010 "vuid": "VUID-vkCmdDrawIndirect-subpass-02685", 22011 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 22012 }, 22013 { 22014 "vuid": "VUID-vkCmdDrawIndirect-None-02686", 22015 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 22016 }, 22017 { 22018 "vuid": "VUID-vkCmdDrawIndirect-None-02687", 22019 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 22020 }, 22021 { 22022 "vuid": "VUID-vkCmdDrawIndirect-None-04007", 22023 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound" 22024 }, 22025 { 22026 "vuid": "VUID-vkCmdDrawIndirect-None-04008", 22027 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 22028 }, 22029 { 22030 "vuid": "VUID-vkCmdDrawIndirect-None-02721", 22031 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 22032 }, 22033 { 22034 "vuid": "VUID-vkCmdDrawIndirect-buffer-02708", 22035 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 22036 }, 22037 { 22038 "vuid": "VUID-vkCmdDrawIndirect-buffer-02709", 22039 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 22040 }, 22041 { 22042 "vuid": "VUID-vkCmdDrawIndirect-offset-02710", 22043 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 22044 }, 22045 { 22046 "vuid": "VUID-vkCmdDrawIndirect-drawCount-02718", 22047 "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 22048 }, 22049 { 22050 "vuid": "VUID-vkCmdDrawIndirect-drawCount-02719", 22051 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 22052 }, 22053 { 22054 "vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478", 22055 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>" 22056 }, 22057 { 22058 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476", 22059 "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)" 22060 }, 22061 { 22062 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487", 22063 "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 22064 }, 22065 { 22066 "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488", 22067 "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <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>" 22068 }, 22069 { 22070 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter", 22071 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 22072 }, 22073 { 22074 "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter", 22075 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 22076 }, 22077 { 22078 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording", 22079 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 22080 }, 22081 { 22082 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool", 22083 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 22084 }, 22085 { 22086 "vuid": "VUID-vkCmdDrawIndirect-renderpass", 22087 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 22088 }, 22089 { 22090 "vuid": "VUID-vkCmdDrawIndirect-commonparent", 22091 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 22092 } 22093 ], 22094 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 22095 { 22096 "vuid": "VUID-vkCmdDrawIndirect-None-02692", 22097 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 22098 } 22099 ], 22100 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 22101 { 22102 "vuid": "VUID-vkCmdDrawIndirect-None-02693", 22103 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 22104 } 22105 ], 22106 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 22107 { 22108 "vuid": "VUID-vkCmdDrawIndirect-filterCubic-02694", 22109 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 22110 }, 22111 { 22112 "vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02695", 22113 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 22114 } 22115 ], 22116 "(VK_NV_corner_sampled_image)": [ 22117 { 22118 "vuid": "VUID-vkCmdDrawIndirect-flags-02696", 22119 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 22120 } 22121 ], 22122 "(VK_VERSION_1_1)": [ 22123 { 22124 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02707", 22125 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 22126 }, 22127 { 22128 "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02711", 22129 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 22130 } 22131 ], 22132 "(VK_EXT_shader_image_atomic_int64)": [ 22133 { 22134 "vuid": "VUID-vkCmdDrawIndirect-SampledType-04470", 22135 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 22136 }, 22137 { 22138 "vuid": "VUID-vkCmdDrawIndirect-SampledType-04471", 22139 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 22140 }, 22141 { 22142 "vuid": "VUID-vkCmdDrawIndirect-SampledType-04472", 22143 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 22144 }, 22145 { 22146 "vuid": "VUID-vkCmdDrawIndirect-SampledType-04473", 22147 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 22148 }, 22149 { 22150 "vuid": "VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04474", 22151 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 22152 }, 22153 { 22154 "vuid": "VUID-vkCmdDrawIndirect-sparseImageInt64Atomics-04475", 22155 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 22156 } 22157 ], 22158 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 22159 { 22160 "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-02688", 22161 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 22162 } 22163 ], 22164 "(VK_EXT_sample_locations)": [ 22165 { 22166 "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-02689", 22167 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 22168 } 22169 ], 22170 "(VK_EXT_extended_dynamic_state)": [ 22171 { 22172 "vuid": "VUID-vkCmdDrawIndirect-viewportCount-03417", 22173 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 22174 }, 22175 { 22176 "vuid": "VUID-vkCmdDrawIndirect-scissorCount-03418", 22177 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 22178 }, 22179 { 22180 "vuid": "VUID-vkCmdDrawIndirect-viewportCount-03419", 22181 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 22182 }, 22183 { 22184 "vuid": "VUID-vkCmdDrawIndirect-primitiveTopology-03420", 22185 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 22186 } 22187 ], 22188 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 22189 { 22190 "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04137", 22191 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22192 }, 22193 { 22194 "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04138", 22195 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22196 } 22197 ], 22198 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 22199 { 22200 "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04139", 22201 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22202 }, 22203 { 22204 "vuid": "VUID-vkCmdDrawIndirect-viewportCount-04140", 22205 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22206 } 22207 ], 22208 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 22209 { 22210 "vuid": "VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04141", 22211 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22212 } 22213 ], 22214 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 22215 { 22216 "vuid": "VUID-vkCmdDrawIndirect-VkPipelineVieportCreateInfo-04142", 22217 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22218 } 22219 ], 22220 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 22221 { 22222 "vuid": "VUID-vkCmdDrawIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552", 22223 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 22224 } 22225 ] 22226 }, 22227 "VkDrawIndirectCommand": { 22228 "core": [ 22229 { 22230 "vuid": "VUID-VkDrawIndirectCommand-None-00500", 22231 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 22232 }, 22233 { 22234 "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501", 22235 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>" 22236 } 22237 ] 22238 }, 22239 "vkCmdDrawIndirectCount": { 22240 "core": [ 22241 { 22242 "vuid": "VUID-vkCmdDrawIndirectCount-magFilter-04553", 22243 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 22244 }, 22245 { 22246 "vuid": "VUID-vkCmdDrawIndirectCount-None-02691", 22247 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 22248 }, 22249 { 22250 "vuid": "VUID-vkCmdDrawIndirectCount-None-02697", 22251 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 22252 }, 22253 { 22254 "vuid": "VUID-vkCmdDrawIndirectCount-None-02698", 22255 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 22256 }, 22257 { 22258 "vuid": "VUID-vkCmdDrawIndirectCount-None-02699", 22259 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 22260 }, 22261 { 22262 "vuid": "VUID-vkCmdDrawIndirectCount-None-02700", 22263 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 22264 }, 22265 { 22266 "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02701", 22267 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 22268 }, 22269 { 22270 "vuid": "VUID-vkCmdDrawIndirectCount-None-02859", 22271 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 22272 }, 22273 { 22274 "vuid": "VUID-vkCmdDrawIndirectCount-None-02702", 22275 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 22276 }, 22277 { 22278 "vuid": "VUID-vkCmdDrawIndirectCount-None-02703", 22279 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 22280 }, 22281 { 22282 "vuid": "VUID-vkCmdDrawIndirectCount-None-02704", 22283 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 22284 }, 22285 { 22286 "vuid": "VUID-vkCmdDrawIndirectCount-None-02705", 22287 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 22288 }, 22289 { 22290 "vuid": "VUID-vkCmdDrawIndirectCount-None-02706", 22291 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 22292 }, 22293 { 22294 "vuid": "VUID-vkCmdDrawIndirectCount-None-04115", 22295 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 22296 }, 22297 { 22298 "vuid": "VUID-vkCmdDrawIndirectCount-OpImageWrite-04469", 22299 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 22300 }, 22301 { 22302 "vuid": "VUID-vkCmdDrawIndirectCount-renderPass-02684", 22303 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 22304 }, 22305 { 22306 "vuid": "VUID-vkCmdDrawIndirectCount-subpass-02685", 22307 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 22308 }, 22309 { 22310 "vuid": "VUID-vkCmdDrawIndirectCount-None-02686", 22311 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 22312 }, 22313 { 22314 "vuid": "VUID-vkCmdDrawIndirectCount-None-02687", 22315 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 22316 }, 22317 { 22318 "vuid": "VUID-vkCmdDrawIndirectCount-None-04007", 22319 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound" 22320 }, 22321 { 22322 "vuid": "VUID-vkCmdDrawIndirectCount-None-04008", 22323 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 22324 }, 22325 { 22326 "vuid": "VUID-vkCmdDrawIndirectCount-None-02721", 22327 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 22328 }, 22329 { 22330 "vuid": "VUID-vkCmdDrawIndirectCount-buffer-02708", 22331 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 22332 }, 22333 { 22334 "vuid": "VUID-vkCmdDrawIndirectCount-buffer-02709", 22335 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 22336 }, 22337 { 22338 "vuid": "VUID-vkCmdDrawIndirectCount-offset-02710", 22339 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 22340 }, 22341 { 22342 "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02714", 22343 "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 22344 }, 22345 { 22346 "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02715", 22347 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 22348 }, 22349 { 22350 "vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-02716", 22351 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 22352 }, 22353 { 22354 "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-02717", 22355 "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 22356 }, 22357 { 22358 "vuid": "VUID-vkCmdDrawIndirectCount-countBufferOffset-04129", 22359 "text": " <span class=\"eq\">(<code>countBufferOffset</code> + <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>" 22360 }, 22361 { 22362 "vuid": "VUID-vkCmdDrawIndirectCount-stride-03110", 22363 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to sizeof(<code>VkDrawIndirectCommand</code>)" 22364 }, 22365 { 22366 "vuid": "VUID-vkCmdDrawIndirectCount-maxDrawCount-03111", 22367 "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <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>" 22368 }, 22369 { 22370 "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-03121", 22371 "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 22372 }, 22373 { 22374 "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-03122", 22375 "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <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>" 22376 } 22377 ], 22378 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 22379 { 22380 "vuid": "VUID-vkCmdDrawIndirectCount-None-02692", 22381 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 22382 } 22383 ], 22384 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 22385 { 22386 "vuid": "VUID-vkCmdDrawIndirectCount-None-02693", 22387 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 22388 } 22389 ], 22390 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 22391 { 22392 "vuid": "VUID-vkCmdDrawIndirectCount-filterCubic-02694", 22393 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 22394 }, 22395 { 22396 "vuid": "VUID-vkCmdDrawIndirectCount-filterCubicMinmax-02695", 22397 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 22398 } 22399 ], 22400 "(VK_NV_corner_sampled_image)": [ 22401 { 22402 "vuid": "VUID-vkCmdDrawIndirectCount-flags-02696", 22403 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 22404 } 22405 ], 22406 "(VK_VERSION_1_1)": [ 22407 { 22408 "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02707", 22409 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 22410 }, 22411 { 22412 "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-02711", 22413 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 22414 } 22415 ], 22416 "(VK_EXT_shader_image_atomic_int64)": [ 22417 { 22418 "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04470", 22419 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 22420 }, 22421 { 22422 "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04471", 22423 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 22424 }, 22425 { 22426 "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04472", 22427 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 22428 }, 22429 { 22430 "vuid": "VUID-vkCmdDrawIndirectCount-SampledType-04473", 22431 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 22432 }, 22433 { 22434 "vuid": "VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04474", 22435 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 22436 }, 22437 { 22438 "vuid": "VUID-vkCmdDrawIndirectCount-sparseImageInt64Atomics-04475", 22439 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 22440 } 22441 ], 22442 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 22443 { 22444 "vuid": "VUID-vkCmdDrawIndirectCount-maxMultiviewInstanceIndex-02688", 22445 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 22446 } 22447 ], 22448 "(VK_EXT_sample_locations)": [ 22449 { 22450 "vuid": "VUID-vkCmdDrawIndirectCount-sampleLocationsEnable-02689", 22451 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 22452 } 22453 ], 22454 "(VK_EXT_extended_dynamic_state)": [ 22455 { 22456 "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03417", 22457 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 22458 }, 22459 { 22460 "vuid": "VUID-vkCmdDrawIndirectCount-scissorCount-03418", 22461 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 22462 }, 22463 { 22464 "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-03419", 22465 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 22466 }, 22467 { 22468 "vuid": "VUID-vkCmdDrawIndirectCount-primitiveTopology-03420", 22469 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 22470 } 22471 ], 22472 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 22473 { 22474 "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04137", 22475 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22476 }, 22477 { 22478 "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04138", 22479 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22480 } 22481 ], 22482 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 22483 { 22484 "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04139", 22485 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22486 }, 22487 { 22488 "vuid": "VUID-vkCmdDrawIndirectCount-viewportCount-04140", 22489 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22490 } 22491 ], 22492 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 22493 { 22494 "vuid": "VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04141", 22495 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22496 } 22497 ], 22498 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 22499 { 22500 "vuid": "VUID-vkCmdDrawIndirectCount-VkPipelineVieportCreateInfo-04142", 22501 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22502 } 22503 ], 22504 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 22505 { 22506 "vuid": "VUID-vkCmdDrawIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552", 22507 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 22508 } 22509 ], 22510 "(VK_VERSION_1_2)": [ 22511 { 22512 "vuid": "VUID-vkCmdDrawIndirectCount-None-04445", 22513 "text": " If <a href=\"#features-drawIndirectCount\">drawIndirectCount</a> is not enabled this function <strong class=\"purple\">must</strong> not be used" 22514 } 22515 ], 22516 "(VK_VERSION_1_2,VK_KHR_draw_indirect_count)": [ 22517 { 22518 "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-parameter", 22519 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 22520 }, 22521 { 22522 "vuid": "VUID-vkCmdDrawIndirectCount-buffer-parameter", 22523 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 22524 }, 22525 { 22526 "vuid": "VUID-vkCmdDrawIndirectCount-countBuffer-parameter", 22527 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 22528 }, 22529 { 22530 "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-recording", 22531 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 22532 }, 22533 { 22534 "vuid": "VUID-vkCmdDrawIndirectCount-commandBuffer-cmdpool", 22535 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 22536 }, 22537 { 22538 "vuid": "VUID-vkCmdDrawIndirectCount-renderpass", 22539 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 22540 }, 22541 { 22542 "vuid": "VUID-vkCmdDrawIndirectCount-commonparent", 22543 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 22544 } 22545 ] 22546 }, 22547 "vkCmdDrawIndexedIndirect": { 22548 "core": [ 22549 { 22550 "vuid": "VUID-vkCmdDrawIndexedIndirect-magFilter-04553", 22551 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 22552 }, 22553 { 22554 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02691", 22555 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 22556 }, 22557 { 22558 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02697", 22559 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 22560 }, 22561 { 22562 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02698", 22563 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 22564 }, 22565 { 22566 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02699", 22567 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 22568 }, 22569 { 22570 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02700", 22571 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 22572 }, 22573 { 22574 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02701", 22575 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 22576 }, 22577 { 22578 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02859", 22579 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 22580 }, 22581 { 22582 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02702", 22583 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 22584 }, 22585 { 22586 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02703", 22587 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 22588 }, 22589 { 22590 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02704", 22591 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 22592 }, 22593 { 22594 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02705", 22595 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 22596 }, 22597 { 22598 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02706", 22599 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 22600 }, 22601 { 22602 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04115", 22603 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 22604 }, 22605 { 22606 "vuid": "VUID-vkCmdDrawIndexedIndirect-OpImageWrite-04469", 22607 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 22608 }, 22609 { 22610 "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-02684", 22611 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 22612 }, 22613 { 22614 "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-02685", 22615 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 22616 }, 22617 { 22618 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02686", 22619 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 22620 }, 22621 { 22622 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02687", 22623 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 22624 }, 22625 { 22626 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04007", 22627 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound" 22628 }, 22629 { 22630 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-04008", 22631 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 22632 }, 22633 { 22634 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02721", 22635 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 22636 }, 22637 { 22638 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02708", 22639 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 22640 }, 22641 { 22642 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-02709", 22643 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 22644 }, 22645 { 22646 "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-02710", 22647 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 22648 }, 22649 { 22650 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02718", 22651 "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 22652 }, 22653 { 22654 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-02719", 22655 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 22656 }, 22657 { 22658 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528", 22659 "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>)" 22660 }, 22661 { 22662 "vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530", 22663 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>" 22664 }, 22665 { 22666 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539", 22667 "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 22668 }, 22669 { 22670 "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540", 22671 "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <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>" 22672 }, 22673 { 22674 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter", 22675 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 22676 }, 22677 { 22678 "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter", 22679 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 22680 }, 22681 { 22682 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording", 22683 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 22684 }, 22685 { 22686 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool", 22687 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 22688 }, 22689 { 22690 "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass", 22691 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 22692 }, 22693 { 22694 "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent", 22695 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 22696 } 22697 ], 22698 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 22699 { 22700 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02692", 22701 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 22702 } 22703 ], 22704 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 22705 { 22706 "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02693", 22707 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 22708 } 22709 ], 22710 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 22711 { 22712 "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02694", 22713 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 22714 }, 22715 { 22716 "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02695", 22717 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 22718 } 22719 ], 22720 "(VK_NV_corner_sampled_image)": [ 22721 { 22722 "vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02696", 22723 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 22724 } 22725 ], 22726 "(VK_VERSION_1_1)": [ 22727 { 22728 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02707", 22729 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 22730 }, 22731 { 22732 "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02711", 22733 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 22734 } 22735 ], 22736 "(VK_EXT_shader_image_atomic_int64)": [ 22737 { 22738 "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04470", 22739 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 22740 }, 22741 { 22742 "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04471", 22743 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 22744 }, 22745 { 22746 "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04472", 22747 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 22748 }, 22749 { 22750 "vuid": "VUID-vkCmdDrawIndexedIndirect-SampledType-04473", 22751 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 22752 }, 22753 { 22754 "vuid": "VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04474", 22755 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 22756 }, 22757 { 22758 "vuid": "VUID-vkCmdDrawIndexedIndirect-sparseImageInt64Atomics-04475", 22759 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 22760 } 22761 ], 22762 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 22763 { 22764 "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-02688", 22765 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 22766 } 22767 ], 22768 "(VK_EXT_sample_locations)": [ 22769 { 22770 "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-02689", 22771 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 22772 } 22773 ], 22774 "(VK_EXT_extended_dynamic_state)": [ 22775 { 22776 "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03417", 22777 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 22778 }, 22779 { 22780 "vuid": "VUID-vkCmdDrawIndexedIndirect-scissorCount-03418", 22781 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 22782 }, 22783 { 22784 "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-03419", 22785 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 22786 }, 22787 { 22788 "vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveTopology-03420", 22789 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 22790 } 22791 ], 22792 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 22793 { 22794 "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04137", 22795 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22796 }, 22797 { 22798 "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04138", 22799 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22800 } 22801 ], 22802 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 22803 { 22804 "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04139", 22805 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22806 }, 22807 { 22808 "vuid": "VUID-vkCmdDrawIndexedIndirect-viewportCount-04140", 22809 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22810 } 22811 ], 22812 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 22813 { 22814 "vuid": "VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04141", 22815 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22816 } 22817 ], 22818 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 22819 { 22820 "vuid": "VUID-vkCmdDrawIndexedIndirect-VkPipelineVieportCreateInfo-04142", 22821 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 22822 } 22823 ], 22824 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 22825 { 22826 "vuid": "VUID-vkCmdDrawIndexedIndirect-primitiveFragmentShadingRateWithMultipleViewports-04552", 22827 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 22828 } 22829 ] 22830 }, 22831 "VkDrawIndexedIndirectCommand": { 22832 "core": [ 22833 { 22834 "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552", 22835 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 22836 }, 22837 { 22838 "vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553", 22839 "text": " <span class=\"eq\">(<code>indexSize</code> {times} (<code>firstIndex</code> + <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>" 22840 }, 22841 { 22842 "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554", 22843 "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>" 22844 } 22845 ] 22846 }, 22847 "vkCmdDrawIndexedIndirectCount": { 22848 "core": [ 22849 { 22850 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-magFilter-04553", 22851 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 22852 }, 22853 { 22854 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02691", 22855 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 22856 }, 22857 { 22858 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02697", 22859 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 22860 }, 22861 { 22862 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02698", 22863 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 22864 }, 22865 { 22866 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02699", 22867 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 22868 }, 22869 { 22870 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02700", 22871 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 22872 }, 22873 { 22874 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02701", 22875 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 22876 }, 22877 { 22878 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02859", 22879 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 22880 }, 22881 { 22882 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02702", 22883 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 22884 }, 22885 { 22886 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02703", 22887 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 22888 }, 22889 { 22890 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02704", 22891 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 22892 }, 22893 { 22894 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02705", 22895 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 22896 }, 22897 { 22898 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02706", 22899 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 22900 }, 22901 { 22902 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04115", 22903 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 22904 }, 22905 { 22906 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-OpImageWrite-04469", 22907 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 22908 }, 22909 { 22910 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderPass-02684", 22911 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 22912 }, 22913 { 22914 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-subpass-02685", 22915 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 22916 }, 22917 { 22918 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02686", 22919 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 22920 }, 22921 { 22922 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02687", 22923 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 22924 }, 22925 { 22926 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04007", 22927 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound" 22928 }, 22929 { 22930 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04008", 22931 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 22932 }, 22933 { 22934 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02721", 22935 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 22936 }, 22937 { 22938 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02708", 22939 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 22940 }, 22941 { 22942 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-02709", 22943 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 22944 }, 22945 { 22946 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-offset-02710", 22947 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 22948 }, 22949 { 22950 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02714", 22951 "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 22952 }, 22953 { 22954 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02715", 22955 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 22956 }, 22957 { 22958 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-02716", 22959 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 22960 }, 22961 { 22962 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-02717", 22963 "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 22964 }, 22965 { 22966 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBufferOffset-04129", 22967 "text": " <span class=\"eq\">(<code>countBufferOffset</code> + <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>" 22968 }, 22969 { 22970 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-stride-03142", 22971 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to sizeof(<code>VkDrawIndexedIndirectCommand</code>)" 22972 }, 22973 { 22974 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxDrawCount-03143", 22975 "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <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>" 22976 }, 22977 { 22978 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03153", 22979 "text": " If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 22980 }, 22981 { 22982 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-03154", 22983 "text": " If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <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>" 22984 } 22985 ], 22986 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 22987 { 22988 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02692", 22989 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 22990 } 22991 ], 22992 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 22993 { 22994 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-02693", 22995 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 22996 } 22997 ], 22998 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 22999 { 23000 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubic-02694", 23001 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 23002 }, 23003 { 23004 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-filterCubicMinmax-02695", 23005 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 23006 } 23007 ], 23008 "(VK_NV_corner_sampled_image)": [ 23009 { 23010 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-flags-02696", 23011 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 23012 } 23013 ], 23014 "(VK_VERSION_1_1)": [ 23015 { 23016 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02707", 23017 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 23018 }, 23019 { 23020 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-02711", 23021 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 23022 } 23023 ], 23024 "(VK_EXT_shader_image_atomic_int64)": [ 23025 { 23026 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04470", 23027 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 23028 }, 23029 { 23030 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04471", 23031 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 23032 }, 23033 { 23034 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04472", 23035 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 23036 }, 23037 { 23038 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-SampledType-04473", 23039 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 23040 }, 23041 { 23042 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04474", 23043 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 23044 }, 23045 { 23046 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sparseImageInt64Atomics-04475", 23047 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 23048 } 23049 ], 23050 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 23051 { 23052 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-maxMultiviewInstanceIndex-02688", 23053 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 23054 } 23055 ], 23056 "(VK_EXT_sample_locations)": [ 23057 { 23058 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-sampleLocationsEnable-02689", 23059 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 23060 } 23061 ], 23062 "(VK_EXT_extended_dynamic_state)": [ 23063 { 23064 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03417", 23065 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 23066 }, 23067 { 23068 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-scissorCount-03418", 23069 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 23070 }, 23071 { 23072 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-03419", 23073 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 23074 }, 23075 { 23076 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveTopology-03420", 23077 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 23078 } 23079 ], 23080 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 23081 { 23082 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04137", 23083 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23084 }, 23085 { 23086 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04138", 23087 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23088 } 23089 ], 23090 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 23091 { 23092 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04139", 23093 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23094 }, 23095 { 23096 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-viewportCount-04140", 23097 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23098 } 23099 ], 23100 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 23101 { 23102 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04141", 23103 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23104 } 23105 ], 23106 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 23107 { 23108 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-VkPipelineVieportCreateInfo-04142", 23109 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23110 } 23111 ], 23112 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 23113 { 23114 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-primitiveFragmentShadingRateWithMultipleViewports-04552", 23115 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 23116 } 23117 ], 23118 "(VK_VERSION_1_2)": [ 23119 { 23120 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-None-04445", 23121 "text": " If <a href=\"#features-drawIndirectCount\">drawIndirectCount</a> is not enabled this function <strong class=\"purple\">must</strong> not be used" 23122 } 23123 ], 23124 "(VK_VERSION_1_2,VK_KHR_draw_indirect_count)": [ 23125 { 23126 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-parameter", 23127 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 23128 }, 23129 { 23130 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-buffer-parameter", 23131 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 23132 }, 23133 { 23134 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-countBuffer-parameter", 23135 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 23136 }, 23137 { 23138 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-recording", 23139 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23140 }, 23141 { 23142 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commandBuffer-cmdpool", 23143 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 23144 }, 23145 { 23146 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-renderpass", 23147 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 23148 }, 23149 { 23150 "vuid": "VUID-vkCmdDrawIndexedIndirectCount-commonparent", 23151 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 23152 } 23153 ] 23154 }, 23155 "vkCmdDrawIndirectByteCountEXT": { 23156 "core": [ 23157 { 23158 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-magFilter-04553", 23159 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 23160 }, 23161 { 23162 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02691", 23163 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 23164 }, 23165 { 23166 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02697", 23167 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 23168 }, 23169 { 23170 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02698", 23171 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 23172 }, 23173 { 23174 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02699", 23175 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 23176 }, 23177 { 23178 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02700", 23179 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 23180 }, 23181 { 23182 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02701", 23183 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 23184 }, 23185 { 23186 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02859", 23187 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 23188 }, 23189 { 23190 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02702", 23191 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 23192 }, 23193 { 23194 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02703", 23195 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 23196 }, 23197 { 23198 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02704", 23199 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 23200 }, 23201 { 23202 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02705", 23203 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 23204 }, 23205 { 23206 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02706", 23207 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 23208 }, 23209 { 23210 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04115", 23211 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 23212 }, 23213 { 23214 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-OpImageWrite-04469", 23215 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 23216 }, 23217 { 23218 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02684", 23219 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 23220 }, 23221 { 23222 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02685", 23223 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 23224 }, 23225 { 23226 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02686", 23227 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 23228 }, 23229 { 23230 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02687", 23231 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 23232 }, 23233 { 23234 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04007", 23235 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound" 23236 }, 23237 { 23238 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-04008", 23239 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 23240 }, 23241 { 23242 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02721", 23243 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 23244 }, 23245 { 23246 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287", 23247 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled" 23248 }, 23249 { 23250 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288", 23251 "text": " The implementation <strong class=\"purple\">must</strong> support <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackDraw</code>" 23252 }, 23253 { 23254 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289", 23255 "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be greater than 0 and less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxTransformFeedbackBufferDataStride</code>" 23256 }, 23257 { 23258 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290", 23259 "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 23260 } 23261 ], 23262 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 23263 { 23264 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02692", 23265 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 23266 } 23267 ], 23268 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 23269 { 23270 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02693", 23271 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 23272 } 23273 ], 23274 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 23275 { 23276 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02694", 23277 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 23278 }, 23279 { 23280 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02695", 23281 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 23282 } 23283 ], 23284 "(VK_NV_corner_sampled_image)": [ 23285 { 23286 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-flags-02696", 23287 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 23288 } 23289 ], 23290 "(VK_VERSION_1_1)": [ 23291 { 23292 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02707", 23293 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 23294 }, 23295 { 23296 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646", 23297 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 23298 } 23299 ], 23300 "(VK_EXT_shader_image_atomic_int64)": [ 23301 { 23302 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04470", 23303 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 23304 }, 23305 { 23306 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04471", 23307 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 23308 }, 23309 { 23310 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04472", 23311 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 23312 }, 23313 { 23314 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-SampledType-04473", 23315 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 23316 }, 23317 { 23318 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04474", 23319 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 23320 }, 23321 { 23322 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sparseImageInt64Atomics-04475", 23323 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 23324 } 23325 ], 23326 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 23327 { 23328 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02688", 23329 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 23330 } 23331 ], 23332 "(VK_EXT_sample_locations)": [ 23333 { 23334 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02689", 23335 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 23336 } 23337 ], 23338 "(VK_EXT_extended_dynamic_state)": [ 23339 { 23340 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03417", 23341 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 23342 }, 23343 { 23344 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-scissorCount-03418", 23345 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 23346 }, 23347 { 23348 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-03419", 23349 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 23350 }, 23351 { 23352 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveTopology-03420", 23353 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 23354 } 23355 ], 23356 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 23357 { 23358 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04137", 23359 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23360 }, 23361 { 23362 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04138", 23363 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23364 } 23365 ], 23366 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 23367 { 23368 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04139", 23369 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23370 }, 23371 { 23372 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-viewportCount-04140", 23373 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23374 } 23375 ], 23376 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 23377 { 23378 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04141", 23379 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23380 } 23381 ], 23382 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 23383 { 23384 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-VkPipelineVieportCreateInfo-04142", 23385 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23386 } 23387 ], 23388 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 23389 { 23390 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-primitiveFragmentShadingRateWithMultipleViewports-04552", 23391 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 23392 } 23393 ], 23394 "(VK_EXT_transform_feedback)": [ 23395 { 23396 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter", 23397 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 23398 }, 23399 { 23400 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter", 23401 "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 23402 }, 23403 { 23404 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording", 23405 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23406 }, 23407 { 23408 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool", 23409 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 23410 }, 23411 { 23412 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass", 23413 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 23414 }, 23415 { 23416 "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent", 23417 "text": " Both of <code>commandBuffer</code>, and <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 23418 } 23419 ] 23420 }, 23421 "vkCmdBeginConditionalRenderingEXT": { 23422 "(VK_EXT_conditional_rendering)": [ 23423 { 23424 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980", 23425 "text": " Conditional rendering <strong class=\"purple\">must</strong> not already be <a href=\"#active-conditional-rendering\">active</a>" 23426 }, 23427 { 23428 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter", 23429 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 23430 }, 23431 { 23432 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter", 23433 "text": " <code>pConditionalRenderingBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkConditionalRenderingBeginInfoEXT\">VkConditionalRenderingBeginInfoEXT</a> structure" 23434 }, 23435 { 23436 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording", 23437 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23438 }, 23439 { 23440 "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool", 23441 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 23442 } 23443 ] 23444 }, 23445 "VkConditionalRenderingBeginInfoEXT": { 23446 "(VK_EXT_conditional_rendering)": [ 23447 { 23448 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981", 23449 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 23450 }, 23451 { 23452 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982", 23453 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT</code> bit set" 23454 }, 23455 { 23456 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983", 23457 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code> by at least 32 bits" 23458 }, 23459 { 23460 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984", 23461 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of 4" 23462 }, 23463 { 23464 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType", 23465 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT</code>" 23466 }, 23467 { 23468 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext", 23469 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 23470 }, 23471 { 23472 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter", 23473 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 23474 }, 23475 { 23476 "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter", 23477 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkConditionalRenderingFlagBitsEXT\">VkConditionalRenderingFlagBitsEXT</a> values" 23478 } 23479 ] 23480 }, 23481 "vkCmdEndConditionalRenderingEXT": { 23482 "(VK_EXT_conditional_rendering)": [ 23483 { 23484 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985", 23485 "text": " Conditional rendering <strong class=\"purple\">must</strong> be <a href=\"#active-conditional-rendering\">active</a>" 23486 }, 23487 { 23488 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986", 23489 "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> outside of a render pass instance, it <strong class=\"purple\">must</strong> not be ended inside a render pass instance" 23490 }, 23491 { 23492 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987", 23493 "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> within a subpass it <strong class=\"purple\">must</strong> be ended in the same subpass" 23494 }, 23495 { 23496 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter", 23497 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 23498 }, 23499 { 23500 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording", 23501 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23502 }, 23503 { 23504 "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool", 23505 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 23506 } 23507 ] 23508 }, 23509 "vkCmdDrawMeshTasksNV": { 23510 "core": [ 23511 { 23512 "vuid": "VUID-vkCmdDrawMeshTasksNV-magFilter-04553", 23513 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 23514 }, 23515 { 23516 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02691", 23517 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 23518 }, 23519 { 23520 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02697", 23521 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 23522 }, 23523 { 23524 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02698", 23525 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 23526 }, 23527 { 23528 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02699", 23529 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 23530 }, 23531 { 23532 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02700", 23533 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 23534 }, 23535 { 23536 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02701", 23537 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 23538 }, 23539 { 23540 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02859", 23541 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 23542 }, 23543 { 23544 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02702", 23545 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 23546 }, 23547 { 23548 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02703", 23549 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 23550 }, 23551 { 23552 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02704", 23553 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 23554 }, 23555 { 23556 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02705", 23557 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 23558 }, 23559 { 23560 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02706", 23561 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 23562 }, 23563 { 23564 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-04115", 23565 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 23566 }, 23567 { 23568 "vuid": "VUID-vkCmdDrawMeshTasksNV-OpImageWrite-04469", 23569 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 23570 }, 23571 { 23572 "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02684", 23573 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 23574 }, 23575 { 23576 "vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02685", 23577 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 23578 }, 23579 { 23580 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02686", 23581 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 23582 }, 23583 { 23584 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02687", 23585 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 23586 }, 23587 { 23588 "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119", 23589 "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>" 23590 } 23591 ], 23592 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 23593 { 23594 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02692", 23595 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 23596 } 23597 ], 23598 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 23599 { 23600 "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02693", 23601 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 23602 } 23603 ], 23604 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 23605 { 23606 "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubic-02694", 23607 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 23608 }, 23609 { 23610 "vuid": "VUID-vkCmdDrawMeshTasksNV-filterCubicMinmax-02695", 23611 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 23612 } 23613 ], 23614 "(VK_NV_corner_sampled_image)": [ 23615 { 23616 "vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02696", 23617 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 23618 } 23619 ], 23620 "(VK_VERSION_1_1)": [ 23621 { 23622 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02707", 23623 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 23624 } 23625 ], 23626 "(VK_EXT_shader_image_atomic_int64)": [ 23627 { 23628 "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04470", 23629 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 23630 }, 23631 { 23632 "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04471", 23633 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 23634 }, 23635 { 23636 "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04472", 23637 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 23638 }, 23639 { 23640 "vuid": "VUID-vkCmdDrawMeshTasksNV-SampledType-04473", 23641 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 23642 }, 23643 { 23644 "vuid": "VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04474", 23645 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 23646 }, 23647 { 23648 "vuid": "VUID-vkCmdDrawMeshTasksNV-sparseImageInt64Atomics-04475", 23649 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 23650 } 23651 ], 23652 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 23653 { 23654 "vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02688", 23655 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 23656 } 23657 ], 23658 "(VK_EXT_sample_locations)": [ 23659 { 23660 "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02689", 23661 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 23662 } 23663 ], 23664 "(VK_EXT_extended_dynamic_state)": [ 23665 { 23666 "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03417", 23667 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 23668 }, 23669 { 23670 "vuid": "VUID-vkCmdDrawMeshTasksNV-scissorCount-03418", 23671 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 23672 }, 23673 { 23674 "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-03419", 23675 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 23676 }, 23677 { 23678 "vuid": "VUID-vkCmdDrawMeshTasksNV-primitiveTopology-03420", 23679 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 23680 } 23681 ], 23682 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 23683 { 23684 "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04137", 23685 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23686 }, 23687 { 23688 "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04138", 23689 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23690 } 23691 ], 23692 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 23693 { 23694 "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04139", 23695 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23696 }, 23697 { 23698 "vuid": "VUID-vkCmdDrawMeshTasksNV-viewportCount-04140", 23699 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23700 } 23701 ], 23702 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 23703 { 23704 "vuid": "VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04141", 23705 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23706 } 23707 ], 23708 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 23709 { 23710 "vuid": "VUID-vkCmdDrawMeshTasksNV-VkPipelineVieportCreateInfo-04142", 23711 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23712 } 23713 ], 23714 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 23715 { 23716 "vuid": "VUID-vkCmdDrawMeshTasksNV-primitiveFragmentShadingRateWithMultipleViewports-04552", 23717 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 23718 } 23719 ], 23720 "(VK_NV_mesh_shader)": [ 23721 { 23722 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter", 23723 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 23724 }, 23725 { 23726 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording", 23727 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23728 }, 23729 { 23730 "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool", 23731 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 23732 }, 23733 { 23734 "vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass", 23735 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 23736 } 23737 ] 23738 }, 23739 "vkCmdDrawMeshTasksIndirectNV": { 23740 "core": [ 23741 { 23742 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-magFilter-04553", 23743 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 23744 }, 23745 { 23746 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02691", 23747 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 23748 }, 23749 { 23750 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02697", 23751 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 23752 }, 23753 { 23754 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02698", 23755 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 23756 }, 23757 { 23758 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02699", 23759 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 23760 }, 23761 { 23762 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02700", 23763 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 23764 }, 23765 { 23766 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02701", 23767 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 23768 }, 23769 { 23770 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02859", 23771 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 23772 }, 23773 { 23774 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02702", 23775 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 23776 }, 23777 { 23778 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02703", 23779 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 23780 }, 23781 { 23782 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02704", 23783 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 23784 }, 23785 { 23786 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02705", 23787 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 23788 }, 23789 { 23790 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02706", 23791 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 23792 }, 23793 { 23794 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-04115", 23795 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 23796 }, 23797 { 23798 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-OpImageWrite-04469", 23799 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 23800 }, 23801 { 23802 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02684", 23803 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 23804 }, 23805 { 23806 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02685", 23807 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 23808 }, 23809 { 23810 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02686", 23811 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 23812 }, 23813 { 23814 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02687", 23815 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 23816 }, 23817 { 23818 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02708", 23819 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 23820 }, 23821 { 23822 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02709", 23823 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 23824 }, 23825 { 23826 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02710", 23827 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 23828 }, 23829 { 23830 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02718", 23831 "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 23832 }, 23833 { 23834 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02719", 23835 "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 23836 }, 23837 { 23838 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146", 23839 "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>)" 23840 }, 23841 { 23842 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156", 23843 "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 23844 }, 23845 { 23846 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157", 23847 "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <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>" 23848 } 23849 ], 23850 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 23851 { 23852 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02692", 23853 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 23854 } 23855 ], 23856 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 23857 { 23858 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02693", 23859 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 23860 } 23861 ], 23862 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 23863 { 23864 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubic-02694", 23865 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 23866 }, 23867 { 23868 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-filterCubicMinmax-02695", 23869 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 23870 } 23871 ], 23872 "(VK_NV_corner_sampled_image)": [ 23873 { 23874 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02696", 23875 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 23876 } 23877 ], 23878 "(VK_VERSION_1_1)": [ 23879 { 23880 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02707", 23881 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 23882 }, 23883 { 23884 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02711", 23885 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 23886 } 23887 ], 23888 "(VK_EXT_shader_image_atomic_int64)": [ 23889 { 23890 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04470", 23891 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 23892 }, 23893 { 23894 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04471", 23895 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 23896 }, 23897 { 23898 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04472", 23899 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 23900 }, 23901 { 23902 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-SampledType-04473", 23903 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 23904 }, 23905 { 23906 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04474", 23907 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 23908 }, 23909 { 23910 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sparseImageInt64Atomics-04475", 23911 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 23912 } 23913 ], 23914 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 23915 { 23916 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02688", 23917 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 23918 } 23919 ], 23920 "(VK_EXT_sample_locations)": [ 23921 { 23922 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02689", 23923 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 23924 } 23925 ], 23926 "(VK_EXT_extended_dynamic_state)": [ 23927 { 23928 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03417", 23929 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 23930 }, 23931 { 23932 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-scissorCount-03418", 23933 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 23934 }, 23935 { 23936 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-03419", 23937 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 23938 }, 23939 { 23940 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveTopology-03420", 23941 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 23942 } 23943 ], 23944 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 23945 { 23946 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04137", 23947 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23948 }, 23949 { 23950 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04138", 23951 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23952 } 23953 ], 23954 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 23955 { 23956 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04139", 23957 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23958 }, 23959 { 23960 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-viewportCount-04140", 23961 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23962 } 23963 ], 23964 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 23965 { 23966 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04141", 23967 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23968 } 23969 ], 23970 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 23971 { 23972 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-VkPipelineVieportCreateInfo-04142", 23973 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 23974 } 23975 ], 23976 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 23977 { 23978 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-primitiveFragmentShadingRateWithMultipleViewports-04552", 23979 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 23980 } 23981 ], 23982 "(VK_NV_mesh_shader)": [ 23983 { 23984 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter", 23985 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 23986 }, 23987 { 23988 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter", 23989 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 23990 }, 23991 { 23992 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording", 23993 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 23994 }, 23995 { 23996 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool", 23997 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 23998 }, 23999 { 24000 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass", 24001 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 24002 }, 24003 { 24004 "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent", 24005 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 24006 } 24007 ] 24008 }, 24009 "VkDrawMeshTasksIndirectCommandNV": { 24010 "(VK_NV_mesh_shader)": [ 24011 { 24012 "vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175", 24013 "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>" 24014 } 24015 ] 24016 }, 24017 "vkCmdDrawMeshTasksIndirectCountNV": { 24018 "core": [ 24019 { 24020 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-magFilter-04553", 24021 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 24022 }, 24023 { 24024 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02691", 24025 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 24026 }, 24027 { 24028 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02697", 24029 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 24030 }, 24031 { 24032 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02698", 24033 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 24034 }, 24035 { 24036 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02699", 24037 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 24038 }, 24039 { 24040 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02700", 24041 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 24042 }, 24043 { 24044 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02701", 24045 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 24046 }, 24047 { 24048 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02859", 24049 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 24050 }, 24051 { 24052 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02702", 24053 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 24054 }, 24055 { 24056 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02703", 24057 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 24058 }, 24059 { 24060 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02704", 24061 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 24062 }, 24063 { 24064 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02705", 24065 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 24066 }, 24067 { 24068 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02706", 24069 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 24070 }, 24071 { 24072 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04115", 24073 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 24074 }, 24075 { 24076 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-OpImageWrite-04469", 24077 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 24078 }, 24079 { 24080 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02684", 24081 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 24082 }, 24083 { 24084 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02685", 24085 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 24086 }, 24087 { 24088 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02686", 24089 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 24090 }, 24091 { 24092 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02687", 24093 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 24094 }, 24095 { 24096 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02708", 24097 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 24098 }, 24099 { 24100 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02709", 24101 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 24102 }, 24103 { 24104 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02710", 24105 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 24106 }, 24107 { 24108 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02714", 24109 "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 24110 }, 24111 { 24112 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02715", 24113 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 24114 }, 24115 { 24116 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02716", 24117 "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 24118 }, 24119 { 24120 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02717", 24121 "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>" 24122 }, 24123 { 24124 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-04129", 24125 "text": " <span class=\"eq\">(<code>countBufferOffset</code> + <code>sizeof</code>(uint32_t))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>countBuffer</code>" 24126 }, 24127 { 24128 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182", 24129 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>)" 24130 }, 24131 { 24132 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183", 24133 "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) + <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>" 24134 }, 24135 { 24136 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191", 24137 "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 24138 }, 24139 { 24140 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192", 24141 "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) + <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>" 24142 } 24143 ], 24144 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 24145 { 24146 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02692", 24147 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 24148 } 24149 ], 24150 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 24151 { 24152 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02693", 24153 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 24154 } 24155 ], 24156 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 24157 { 24158 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubic-02694", 24159 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 24160 }, 24161 { 24162 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-filterCubicMinmax-02695", 24163 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 24164 } 24165 ], 24166 "(VK_NV_corner_sampled_image)": [ 24167 { 24168 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-flags-02696", 24169 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 24170 } 24171 ], 24172 "(VK_VERSION_1_1)": [ 24173 { 24174 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02707", 24175 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 24176 }, 24177 { 24178 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02711", 24179 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 24180 } 24181 ], 24182 "(VK_EXT_shader_image_atomic_int64)": [ 24183 { 24184 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04470", 24185 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 24186 }, 24187 { 24188 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04471", 24189 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 24190 }, 24191 { 24192 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04472", 24193 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 24194 }, 24195 { 24196 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-SampledType-04473", 24197 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 24198 }, 24199 { 24200 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04474", 24201 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 24202 }, 24203 { 24204 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sparseImageInt64Atomics-04475", 24205 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 24206 } 24207 ], 24208 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 24209 { 24210 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02688", 24211 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 24212 } 24213 ], 24214 "(VK_EXT_sample_locations)": [ 24215 { 24216 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02689", 24217 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 24218 } 24219 ], 24220 "(VK_EXT_extended_dynamic_state)": [ 24221 { 24222 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03417", 24223 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 24224 }, 24225 { 24226 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-scissorCount-03418", 24227 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 24228 }, 24229 { 24230 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-03419", 24231 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 24232 }, 24233 { 24234 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveTopology-03420", 24235 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 24236 } 24237 ], 24238 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 24239 { 24240 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04137", 24241 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 24242 }, 24243 { 24244 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04138", 24245 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 24246 } 24247 ], 24248 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 24249 { 24250 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04139", 24251 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 24252 }, 24253 { 24254 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-viewportCount-04140", 24255 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 24256 } 24257 ], 24258 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 24259 { 24260 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04141", 24261 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 24262 } 24263 ], 24264 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 24265 { 24266 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-VkPipelineVieportCreateInfo-04142", 24267 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 24268 } 24269 ], 24270 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 24271 { 24272 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-primitiveFragmentShadingRateWithMultipleViewports-04552", 24273 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 24274 } 24275 ], 24276 "(VK_VERSION_1_2)": [ 24277 { 24278 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-04445", 24279 "text": " If <a href=\"#features-drawIndirectCount\">drawIndirectCount</a> is not enabled this function <strong class=\"purple\">must</strong> not be used" 24280 } 24281 ], 24282 "(VK_NV_mesh_shader)": [ 24283 { 24284 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter", 24285 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 24286 }, 24287 { 24288 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter", 24289 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 24290 }, 24291 { 24292 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter", 24293 "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 24294 }, 24295 { 24296 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording", 24297 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 24298 }, 24299 { 24300 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool", 24301 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 24302 }, 24303 { 24304 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass", 24305 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 24306 }, 24307 { 24308 "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent", 24309 "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 24310 } 24311 ] 24312 }, 24313 "VkPipelineVertexInputStateCreateInfo": { 24314 "core": [ 24315 { 24316 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613", 24317 "text": " <code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 24318 }, 24319 { 24320 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614", 24321 "text": " <code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>" 24322 }, 24323 { 24324 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615", 24325 "text": " For every <code>binding</code> specified by each element of <code>pVertexAttributeDescriptions</code>, a <code>VkVertexInputBindingDescription</code> <strong class=\"purple\">must</strong> exist in <code>pVertexBindingDescriptions</code> with the same value of <code>binding</code>" 24326 }, 24327 { 24328 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616", 24329 "text": " All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers" 24330 }, 24331 { 24332 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617", 24333 "text": " All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations" 24334 }, 24335 { 24336 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType", 24337 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>" 24338 }, 24339 { 24340 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext", 24341 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoEXT\">VkPipelineVertexInputDivisorStateCreateInfoEXT</a>" 24342 }, 24343 { 24344 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-unique", 24345 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 24346 }, 24347 { 24348 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask", 24349 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 24350 }, 24351 { 24352 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter", 24353 "text": " If <code>vertexBindingDescriptionCount</code> is not <code>0</code>, <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDescriptionCount</code> valid <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a> structures" 24354 }, 24355 { 24356 "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter", 24357 "text": " If <code>vertexAttributeDescriptionCount</code> is not <code>0</code>, <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexAttributeDescriptionCount</code> valid <a href=\"#VkVertexInputAttributeDescription\">VkVertexInputAttributeDescription</a> structures" 24358 } 24359 ] 24360 }, 24361 "VkVertexInputBindingDescription": { 24362 "core": [ 24363 { 24364 "vuid": "VUID-VkVertexInputBindingDescription-binding-00618", 24365 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 24366 }, 24367 { 24368 "vuid": "VUID-VkVertexInputBindingDescription-stride-00619", 24369 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>" 24370 }, 24371 { 24372 "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter", 24373 "text": " <code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value" 24374 } 24375 ], 24376 "(VK_KHR_portability_subset)": [ 24377 { 24378 "vuid": "VUID-VkVertexInputBindingDescription-stride-04456", 24379 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of, and at least as large as, <a href=\"#VkPhysicalDevicePortabilitySubsetPropertiesKHR\">VkPhysicalDevicePortabilitySubsetPropertiesKHR</a>::<code>minVertexInputBindingStrideAlignment</code>." 24380 } 24381 ] 24382 }, 24383 "VkVertexInputAttributeDescription": { 24384 "core": [ 24385 { 24386 "vuid": "VUID-VkVertexInputAttributeDescription-location-00620", 24387 "text": " <code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>" 24388 }, 24389 { 24390 "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621", 24391 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 24392 }, 24393 { 24394 "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622", 24395 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>" 24396 }, 24397 { 24398 "vuid": "VUID-VkVertexInputAttributeDescription-format-00623", 24399 "text": " <code>format</code> <strong class=\"purple\">must</strong> be allowed as a vertex buffer format, as specified by the <code>VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>" 24400 }, 24401 { 24402 "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter", 24403 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 24404 } 24405 ], 24406 "(VK_KHR_portability_subset)": [ 24407 { 24408 "vuid": "VUID-VkVertexInputAttributeDescription-vertexAttributeAccessBeyondStride-04457", 24409 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>vertexAttributeAccessBeyondStride</code> is <code>VK_FALSE</code>, the sum of <code>offset</code> plus the size of the vertex attribute data described by <code>format</code> <strong class=\"purple\">must</strong> not be greater than <code>stride</code> in the <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a> referenced in <code>binding</code>." 24410 } 24411 ] 24412 }, 24413 "vkCmdBindVertexBuffers": { 24414 "core": [ 24415 { 24416 "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624", 24417 "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 24418 }, 24419 { 24420 "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625", 24421 "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 24422 }, 24423 { 24424 "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626", 24425 "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>" 24426 }, 24427 { 24428 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627", 24429 "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> flag" 24430 }, 24431 { 24432 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628", 24433 "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 24434 }, 24435 { 24436 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04001", 24437 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 24438 }, 24439 { 24440 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter", 24441 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 24442 }, 24443 { 24444 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter", 24445 "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> <a href=\"#VkBuffer\">VkBuffer</a> handles" 24446 }, 24447 { 24448 "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter", 24449 "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values" 24450 }, 24451 { 24452 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording", 24453 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 24454 }, 24455 { 24456 "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool", 24457 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 24458 }, 24459 { 24460 "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength", 24461 "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24462 }, 24463 { 24464 "vuid": "VUID-vkCmdBindVertexBuffers-commonparent", 24465 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 24466 } 24467 ], 24468 "(VK_EXT_robustness2)": [ 24469 { 24470 "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-04002", 24471 "text": " If an element of <code>pBuffers</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <code>pOffsets</code> <strong class=\"purple\">must</strong> be zero" 24472 } 24473 ] 24474 }, 24475 "vkCmdBindVertexBuffers2EXT": { 24476 "(VK_EXT_extended_dynamic_state)": [ 24477 { 24478 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03355", 24479 "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 24480 }, 24481 { 24482 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-firstBinding-03356", 24483 "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 24484 }, 24485 { 24486 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pOffsets-03357", 24487 "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>" 24488 }, 24489 { 24490 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pSizes-03358", 24491 "text": " If <code>pSizes</code> is not <code>NULL</code>, all elements of <code>pOffsets</code> plus <code>pSizes</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding element in <code>pBuffers</code>" 24492 }, 24493 { 24494 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03359", 24495 "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> flag" 24496 }, 24497 { 24498 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-03360", 24499 "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 24500 }, 24501 { 24502 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04111", 24503 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 24504 }, 24505 { 24506 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03361", 24507 "text": " If the bound pipeline state object was created with the <code>VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT</code> dynamic state enabled then <code>pStrides</code> <strong class=\"purple\">must</strong> not be <code>NULL</code>, otherwise <code>pStrides</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 24508 }, 24509 { 24510 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03362", 24511 "text": " If <code>pStrides</code> is not <code>NULL</code> each element of <code>pStrides</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>" 24512 }, 24513 { 24514 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-03363", 24515 "text": " If <code>pStrides</code> is not <code>NULL</code> each element of <code>pStrides</code> <strong class=\"purple\">must</strong> be greater than or equal to the maximum extent of of all vertex input attributes fetched from the corresponding binding, where the extent is calculated as the VkVertexInputAttributeDescription::offset plus VkVertexInputAttributeDescription::format size" 24516 }, 24517 { 24518 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-parameter", 24519 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 24520 }, 24521 { 24522 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-parameter", 24523 "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <a href=\"#VkBuffer\">VkBuffer</a> handles" 24524 }, 24525 { 24526 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pOffsets-parameter", 24527 "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values" 24528 }, 24529 { 24530 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pSizes-parameter", 24531 "text": " If <code>pSizes</code> is not <code>NULL</code>, <code>pSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values" 24532 }, 24533 { 24534 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pStrides-parameter", 24535 "text": " If <code>pStrides</code> is not <code>NULL</code>, <code>pStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values" 24536 }, 24537 { 24538 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-recording", 24539 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 24540 }, 24541 { 24542 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commandBuffer-cmdpool", 24543 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 24544 }, 24545 { 24546 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-bindingCount-arraylength", 24547 "text": " If any of <code>pSizes</code>, or <code>pStrides</code> are not <code>NULL</code>, <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24548 }, 24549 { 24550 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-commonparent", 24551 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 24552 } 24553 ], 24554 "(VK_EXT_extended_dynamic_state)+(VK_EXT_robustness2)": [ 24555 { 24556 "vuid": "VUID-vkCmdBindVertexBuffers2EXT-pBuffers-04112", 24557 "text": " If an element of <code>pBuffers</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then the corresponding element of <code>pOffsets</code> <strong class=\"purple\">must</strong> be zero" 24558 } 24559 ] 24560 }, 24561 "VkPipelineVertexInputDivisorStateCreateInfoEXT": { 24562 "(VK_EXT_vertex_attribute_divisor)": [ 24563 { 24564 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType", 24565 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT</code>" 24566 }, 24567 { 24568 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter", 24569 "text": " <code>pVertexBindingDivisors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDivisorCount</code> <a href=\"#VkVertexInputBindingDivisorDescriptionEXT\">VkVertexInputBindingDivisorDescriptionEXT</a> structures" 24570 }, 24571 { 24572 "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength", 24573 "text": " <code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24574 } 24575 ] 24576 }, 24577 "VkVertexInputBindingDivisorDescriptionEXT": { 24578 "(VK_EXT_vertex_attribute_divisor)": [ 24579 { 24580 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869", 24581 "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>" 24582 }, 24583 { 24584 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228", 24585 "text": " If the <code>vertexAttributeInstanceRateZeroDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 24586 }, 24587 { 24588 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229", 24589 "text": " If the <code>vertexAttributeInstanceRateDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>" 24590 }, 24591 { 24592 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870", 24593 "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive" 24594 }, 24595 { 24596 "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871", 24597 "text": " <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a>::<code>inputRate</code> <strong class=\"purple\">must</strong> be of type <code>VK_VERTEX_INPUT_RATE_INSTANCE</code> for this <code>binding</code>" 24598 } 24599 ] 24600 }, 24601 "VkPipelineTessellationStateCreateInfo": { 24602 "core": [ 24603 { 24604 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214", 24605 "text": " <code>patchControlPoints</code> <strong class=\"purple\">must</strong> be greater than zero and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>" 24606 }, 24607 { 24608 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType", 24609 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>" 24610 }, 24611 { 24612 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext", 24613 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineTessellationDomainOriginStateCreateInfo\">VkPipelineTessellationDomainOriginStateCreateInfo</a>" 24614 }, 24615 { 24616 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-unique", 24617 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 24618 }, 24619 { 24620 "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask", 24621 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 24622 } 24623 ] 24624 }, 24625 "VkPipelineTessellationDomainOriginStateCreateInfo": { 24626 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 24627 { 24628 "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType", 24629 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>" 24630 }, 24631 { 24632 "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter", 24633 "text": " <code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value" 24634 } 24635 ] 24636 }, 24637 "vkCmdBindTransformFeedbackBuffersEXT": { 24638 "(VK_EXT_transform_feedback)": [ 24639 { 24640 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355", 24641 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled" 24642 }, 24643 { 24644 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356", 24645 "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 24646 }, 24647 { 24648 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357", 24649 "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 24650 }, 24651 { 24652 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358", 24653 "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>" 24654 }, 24655 { 24656 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359", 24657 "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be a multiple of 4" 24658 }, 24659 { 24660 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360", 24661 "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT</code> flag" 24662 }, 24663 { 24664 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361", 24665 "text": " If the optional <code>pSize</code> array is specified, each element of <code>pSizes</code> <strong class=\"purple\">must</strong> either be <code>VK_WHOLE_SIZE</code>, or be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBufferSize</code>" 24666 }, 24667 { 24668 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362", 24669 "text": " All elements of <code>pSizes</code> <strong class=\"purple\">must</strong> be either <code>VK_WHOLE_SIZE</code>, or less than or equal to the size of the corresponding buffer in <code>pBuffers</code>" 24670 }, 24671 { 24672 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363", 24673 "text": " All elements of <code>pOffsets</code> plus <code>pSizes</code>, where the <code>pSizes</code>, element is not <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding buffer in <code>pBuffers</code>" 24674 }, 24675 { 24676 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364", 24677 "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 24678 }, 24679 { 24680 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365", 24681 "text": " Transform feedback <strong class=\"purple\">must</strong> not be active when the <code>vkCmdBindTransformFeedbackBuffersEXT</code> command is recorded" 24682 }, 24683 { 24684 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter", 24685 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 24686 }, 24687 { 24688 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter", 24689 "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <a href=\"#VkBuffer\">VkBuffer</a> handles" 24690 }, 24691 { 24692 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter", 24693 "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values" 24694 }, 24695 { 24696 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording", 24697 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 24698 }, 24699 { 24700 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool", 24701 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 24702 }, 24703 { 24704 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength", 24705 "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24706 }, 24707 { 24708 "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent", 24709 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 24710 } 24711 ] 24712 }, 24713 "vkCmdBeginTransformFeedbackEXT": { 24714 "(VK_EXT_transform_feedback)": [ 24715 { 24716 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366", 24717 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled" 24718 }, 24719 { 24720 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367", 24721 "text": " Transform feedback <strong class=\"purple\">must</strong> not be active" 24722 }, 24723 { 24724 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368", 24725 "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 24726 }, 24727 { 24728 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369", 24729 "text": " The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 24730 }, 24731 { 24732 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607", 24733 "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBuffers</code> is not <code>NULL</code>, <code>pCounterBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkBuffer</code> handles that are either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 24734 }, 24735 { 24736 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370", 24737 "text": " For each buffer handle in the array, if it is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> reference a buffer large enough to hold 4 bytes at the corresponding offset from the <code>pCounterBufferOffsets</code> array" 24738 }, 24739 { 24740 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371", 24741 "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>" 24742 }, 24743 { 24744 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372", 24745 "text": " For each buffer handle in the <code>pCounterBuffers</code> array that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code>" 24746 }, 24747 { 24748 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-04128", 24749 "text": " The last vertex processing stage of the bound graphics pipeline <strong class=\"purple\">must</strong> have been declared with the <code>Xfb</code> execution mode" 24750 }, 24751 { 24752 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter", 24753 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 24754 }, 24755 { 24756 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter", 24757 "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBufferOffsets</code> is not <code>NULL</code>, <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkDeviceSize</code> values" 24758 }, 24759 { 24760 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording", 24761 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 24762 }, 24763 { 24764 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool", 24765 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 24766 }, 24767 { 24768 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass", 24769 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 24770 }, 24771 { 24772 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent", 24773 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 24774 } 24775 ], 24776 "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [ 24777 { 24778 "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373", 24779 "text": " Transform feedback <strong class=\"purple\">must</strong> not be made active in a render pass instance with multiview enabled" 24780 } 24781 ] 24782 }, 24783 "vkCmdEndTransformFeedbackEXT": { 24784 "(VK_EXT_transform_feedback)": [ 24785 { 24786 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374", 24787 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled" 24788 }, 24789 { 24790 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375", 24791 "text": " Transform feedback <strong class=\"purple\">must</strong> be active" 24792 }, 24793 { 24794 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376", 24795 "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 24796 }, 24797 { 24798 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377", 24799 "text": " The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>" 24800 }, 24801 { 24802 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608", 24803 "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBuffers</code> is not <code>NULL</code>, <code>pCounterBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkBuffer</code> handles that are either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 24804 }, 24805 { 24806 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378", 24807 "text": " For each buffer handle in the array, if it is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> reference a buffer large enough to hold 4 bytes at the corresponding offset from the <code>pCounterBufferOffsets</code> array" 24808 }, 24809 { 24810 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379", 24811 "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>" 24812 }, 24813 { 24814 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380", 24815 "text": " For each buffer handle in the <code>pCounterBuffers</code> array that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code>" 24816 }, 24817 { 24818 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter", 24819 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 24820 }, 24821 { 24822 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter", 24823 "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBufferOffsets</code> is not <code>NULL</code>, <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkDeviceSize</code> values" 24824 }, 24825 { 24826 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording", 24827 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 24828 }, 24829 { 24830 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool", 24831 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 24832 }, 24833 { 24834 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass", 24835 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 24836 }, 24837 { 24838 "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent", 24839 "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 24840 } 24841 ] 24842 }, 24843 "VkPipelineViewportSwizzleStateCreateInfoNV": { 24844 "(VK_NV_viewport_swizzle)": [ 24845 { 24846 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215", 24847 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>" 24848 }, 24849 { 24850 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType", 24851 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>" 24852 }, 24853 { 24854 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask", 24855 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 24856 }, 24857 { 24858 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter", 24859 "text": " <code>pViewportSwizzles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewportSwizzleNV\">VkViewportSwizzleNV</a> structures" 24860 }, 24861 { 24862 "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength", 24863 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24864 } 24865 ] 24866 }, 24867 "VkViewportSwizzleNV": { 24868 "(VK_NV_viewport_swizzle)": [ 24869 { 24870 "vuid": "VUID-VkViewportSwizzleNV-x-parameter", 24871 "text": " <code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value" 24872 }, 24873 { 24874 "vuid": "VUID-VkViewportSwizzleNV-y-parameter", 24875 "text": " <code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value" 24876 }, 24877 { 24878 "vuid": "VUID-VkViewportSwizzleNV-z-parameter", 24879 "text": " <code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value" 24880 }, 24881 { 24882 "vuid": "VUID-VkViewportSwizzleNV-w-parameter", 24883 "text": " <code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value" 24884 } 24885 ] 24886 }, 24887 "VkPipelineViewportWScalingStateCreateInfoNV": { 24888 "(VK_NV_clip_space_w_scaling)": [ 24889 { 24890 "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType", 24891 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>" 24892 }, 24893 { 24894 "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength", 24895 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24896 } 24897 ] 24898 }, 24899 "vkCmdSetViewportWScalingNV": { 24900 "(VK_NV_clip_space_w_scaling)": [ 24901 { 24902 "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323", 24903 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>" 24904 }, 24905 { 24906 "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324", 24907 "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>, inclusive" 24908 }, 24909 { 24910 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter", 24911 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 24912 }, 24913 { 24914 "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter", 24915 "text": " <code>pViewportWScalings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures" 24916 }, 24917 { 24918 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording", 24919 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 24920 }, 24921 { 24922 "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool", 24923 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 24924 }, 24925 { 24926 "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength", 24927 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24928 } 24929 ] 24930 }, 24931 "VkPipelineViewportStateCreateInfo": { 24932 "core": [ 24933 { 24934 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216", 24935 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> not be greater than <code>1</code>" 24936 }, 24937 { 24938 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217", 24939 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> not be greater than <code>1</code>" 24940 }, 24941 { 24942 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218", 24943 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 24944 }, 24945 { 24946 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219", 24947 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 24948 }, 24949 { 24950 "vuid": "VUID-VkPipelineViewportStateCreateInfo-x-02821", 24951 "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>" 24952 }, 24953 { 24954 "vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02822", 24955 "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>" 24956 }, 24957 { 24958 "vuid": "VUID-VkPipelineViewportStateCreateInfo-offset-02823", 24959 "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>" 24960 }, 24961 { 24962 "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType", 24963 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>" 24964 }, 24965 { 24966 "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext", 24967 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineViewportCoarseSampleOrderStateCreateInfoNV\">VkPipelineViewportCoarseSampleOrderStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>, or <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>" 24968 }, 24969 { 24970 "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique", 24971 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 24972 }, 24973 { 24974 "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask", 24975 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 24976 } 24977 ], 24978 "!(VK_EXT_extended_dynamic_state)": [ 24979 { 24980 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220", 24981 "text": " <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical" 24982 }, 24983 { 24984 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength", 24985 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24986 }, 24987 { 24988 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength", 24989 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 24990 } 24991 ], 24992 "(VK_EXT_extended_dynamic_state)": [ 24993 { 24994 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04134", 24995 "text": " If the graphics pipeline is being created without <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> set then <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical" 24996 }, 24997 { 24998 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-04135", 24999 "text": " If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> set then <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise it <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25000 }, 25001 { 25002 "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-04136", 25003 "text": " If the graphics pipeline is being created with <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> set then <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise it <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25004 } 25005 ], 25006 "(VK_NV_clip_space_w_scaling)": [ 25007 { 25008 "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726", 25009 "text": " If the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure included in the <code>pNext</code> chain is <code>VK_TRUE</code>, the <code>viewportCount</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure <strong class=\"purple\">must</strong> be greater than or equal to <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>::<code>viewportCount</code>" 25010 } 25011 ] 25012 }, 25013 "vkCmdSetViewportWithCountEXT": { 25014 "(VK_EXT_extended_dynamic_state)": [ 25015 { 25016 "vuid": "VUID-vkCmdSetViewportWithCountEXT-None-03393", 25017 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 25018 }, 25019 { 25020 "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-03394", 25021 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 25022 }, 25023 { 25024 "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-03395", 25025 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 25026 }, 25027 { 25028 "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-parameter", 25029 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25030 }, 25031 { 25032 "vuid": "VUID-vkCmdSetViewportWithCountEXT-pViewports-parameter", 25033 "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewport\">VkViewport</a> structures" 25034 }, 25035 { 25036 "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-recording", 25037 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25038 }, 25039 { 25040 "vuid": "VUID-vkCmdSetViewportWithCountEXT-commandBuffer-cmdpool", 25041 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25042 }, 25043 { 25044 "vuid": "VUID-vkCmdSetViewportWithCountEXT-viewportCount-arraylength", 25045 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25046 } 25047 ] 25048 }, 25049 "vkCmdSetScissorWithCountEXT": { 25050 "(VK_EXT_extended_dynamic_state)": [ 25051 { 25052 "vuid": "VUID-vkCmdSetScissorWithCountEXT-None-03396", 25053 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 25054 }, 25055 { 25056 "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-03397", 25057 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 25058 }, 25059 { 25060 "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-03398", 25061 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 25062 }, 25063 { 25064 "vuid": "VUID-vkCmdSetScissorWithCountEXT-x-03399", 25065 "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>" 25066 }, 25067 { 25068 "vuid": "VUID-vkCmdSetScissorWithCountEXT-offset-03400", 25069 "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>" 25070 }, 25071 { 25072 "vuid": "VUID-vkCmdSetScissorWithCountEXT-offset-03401", 25073 "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>" 25074 }, 25075 { 25076 "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-parameter", 25077 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25078 }, 25079 { 25080 "vuid": "VUID-vkCmdSetScissorWithCountEXT-pScissors-parameter", 25081 "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 25082 }, 25083 { 25084 "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-recording", 25085 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25086 }, 25087 { 25088 "vuid": "VUID-vkCmdSetScissorWithCountEXT-commandBuffer-cmdpool", 25089 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25090 }, 25091 { 25092 "vuid": "VUID-vkCmdSetScissorWithCountEXT-scissorCount-arraylength", 25093 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25094 } 25095 ] 25096 }, 25097 "vkCmdSetViewport": { 25098 "core": [ 25099 { 25100 "vuid": "VUID-vkCmdSetViewport-firstViewport-01222", 25101 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 25102 }, 25103 { 25104 "vuid": "VUID-vkCmdSetViewport-firstViewport-01223", 25105 "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 25106 }, 25107 { 25108 "vuid": "VUID-vkCmdSetViewport-firstViewport-01224", 25109 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25110 }, 25111 { 25112 "vuid": "VUID-vkCmdSetViewport-viewportCount-01225", 25113 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 25114 }, 25115 { 25116 "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter", 25117 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25118 }, 25119 { 25120 "vuid": "VUID-vkCmdSetViewport-pViewports-parameter", 25121 "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkViewport\">VkViewport</a> structures" 25122 }, 25123 { 25124 "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording", 25125 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25126 }, 25127 { 25128 "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool", 25129 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25130 }, 25131 { 25132 "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength", 25133 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25134 } 25135 ] 25136 }, 25137 "VkViewport": { 25138 "core": [ 25139 { 25140 "vuid": "VUID-VkViewport-width-01770", 25141 "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>" 25142 }, 25143 { 25144 "vuid": "VUID-VkViewport-width-01771", 25145 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]" 25146 }, 25147 { 25148 "vuid": "VUID-VkViewport-height-01773", 25149 "text": " The absolute value of <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[1]" 25150 }, 25151 { 25152 "vuid": "VUID-VkViewport-x-01774", 25153 "text": " <code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]" 25154 }, 25155 { 25156 "vuid": "VUID-VkViewport-x-01232", 25157 "text": " <span class=\"eq\">(<code>x</code> + <code>width</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]" 25158 }, 25159 { 25160 "vuid": "VUID-VkViewport-y-01775", 25161 "text": " <code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]" 25162 }, 25163 { 25164 "vuid": "VUID-VkViewport-y-01233", 25165 "text": " <span class=\"eq\">(<code>y</code> + <code>height</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]" 25166 } 25167 ], 25168 "!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [ 25169 { 25170 "vuid": "VUID-VkViewport-height-01772", 25171 "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>" 25172 } 25173 ], 25174 "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [ 25175 { 25176 "vuid": "VUID-VkViewport-y-01776", 25177 "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]" 25178 }, 25179 { 25180 "vuid": "VUID-VkViewport-y-01777", 25181 "text": " <span class=\"eq\">(<code>y</code> + <code>height</code>)</span> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]" 25182 } 25183 ], 25184 "(VK_EXT_depth_range_unrestricted)": [ 25185 { 25186 "vuid": "VUID-VkViewport-minDepth-01234", 25187 "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 25188 }, 25189 { 25190 "vuid": "VUID-VkViewport-maxDepth-01235", 25191 "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 25192 } 25193 ], 25194 "!(VK_EXT_depth_range_unrestricted)": [ 25195 { 25196 "vuid": "VUID-VkViewport-minDepth-02540", 25197 "text": " <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 25198 }, 25199 { 25200 "vuid": "VUID-VkViewport-maxDepth-02541", 25201 "text": " <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 25202 } 25203 ] 25204 }, 25205 "VkPipelineRasterizationStateCreateInfo": { 25206 "core": [ 25207 { 25208 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782", 25209 "text": " If the <a href=\"#features-depthClamp\">depth clamping</a> feature is not enabled, <code>depthClampEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 25210 }, 25211 { 25212 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType", 25213 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>" 25214 }, 25215 { 25216 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext", 25217 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationDepthClipStateCreateInfoEXT\">VkPipelineRasterizationDepthClipStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationLineStateCreateInfoEXT\">VkPipelineRasterizationLineStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationStateRasterizationOrderAMD\">VkPipelineRasterizationStateRasterizationOrderAMD</a>, or <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>" 25218 }, 25219 { 25220 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique", 25221 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 25222 }, 25223 { 25224 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask", 25225 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25226 }, 25227 { 25228 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter", 25229 "text": " <code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value" 25230 }, 25231 { 25232 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter", 25233 "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values" 25234 }, 25235 { 25236 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter", 25237 "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value" 25238 } 25239 ], 25240 "!(VK_NV_fill_rectangle)": [ 25241 { 25242 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413", 25243 "text": " If the <a href=\"#features-fillModeNonSolid\">non-solid fill modes</a> feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code>" 25244 } 25245 ], 25246 "(VK_NV_fill_rectangle)": [ 25247 { 25248 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507", 25249 "text": " If the <a href=\"#features-fillModeNonSolid\">non-solid fill modes</a> feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code> or <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>" 25250 }, 25251 { 25252 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414", 25253 "text": " If the <code><a href=\"#VK_NV_fill_rectangle\">VK_NV_fill_rectangle</a></code> extension is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> not be <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>" 25254 } 25255 ], 25256 "(VK_KHR_portability_subset)": [ 25257 { 25258 "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pointPolygons-04458", 25259 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>pointPolygons</code> is <code>VK_FALSE</code>, and <code>rasterizerDiscardEnable</code> is <code>VK_FALSE</code>, <code>polygonMode</code> <strong class=\"purple\">must</strong> not be <code>VK_POLYGON_MODE_POINT</code>." 25260 } 25261 ] 25262 }, 25263 "VkPipelineRasterizationDepthClipStateCreateInfoEXT": { 25264 "(VK_EXT_depth_clip_enable)": [ 25265 { 25266 "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType", 25267 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT</code>" 25268 }, 25269 { 25270 "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask", 25271 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25272 } 25273 ] 25274 }, 25275 "VkPipelineMultisampleStateCreateInfo": { 25276 "core": [ 25277 { 25278 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784", 25279 "text": " If the <a href=\"#features-sampleRateShading\">sample rate shading</a> feature is not enabled, <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 25280 }, 25281 { 25282 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785", 25283 "text": " If the <a href=\"#features-alphaToOne\">alpha to one</a> feature is not enabled, <code>alphaToOneEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 25284 }, 25285 { 25286 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786", 25287 "text": " <code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>" 25288 }, 25289 { 25290 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType", 25291 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>" 25292 }, 25293 { 25294 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext", 25295 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCoverageModulationStateCreateInfoNV\">VkPipelineCoverageModulationStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageReductionStateCreateInfoNV\">VkPipelineCoverageReductionStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageToColorStateCreateInfoNV\">VkPipelineCoverageToColorStateCreateInfoNV</a>, or <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>" 25296 }, 25297 { 25298 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique", 25299 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 25300 }, 25301 { 25302 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask", 25303 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25304 }, 25305 { 25306 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter", 25307 "text": " <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 25308 }, 25309 { 25310 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter", 25311 "text": " If <code>pSampleMask</code> is not <code>NULL</code>, <code>pSampleMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\lceil{\\mathit{rasterizationSamples} \\over 32}\\rceil\\) <code>VkSampleMask</code> values" 25312 } 25313 ], 25314 "(VK_NV_framebuffer_mixed_samples)": [ 25315 { 25316 "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415", 25317 "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if the subpass has any color attachments and <code>rasterizationSamples</code> is greater than the number of color samples, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 25318 } 25319 ] 25320 }, 25321 "VkPipelineRasterizationStateStreamCreateInfoEXT": { 25322 "(VK_EXT_transform_feedback)": [ 25323 { 25324 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324", 25325 "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> <strong class=\"purple\">must</strong> be enabled" 25326 }, 25327 { 25328 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325", 25329 "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>" 25330 }, 25331 { 25332 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326", 25333 "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>" 25334 }, 25335 { 25336 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType", 25337 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT</code>" 25338 }, 25339 { 25340 "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask", 25341 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25342 } 25343 ] 25344 }, 25345 "VkPipelineRasterizationStateRasterizationOrderAMD": { 25346 "(VK_AMD_rasterization_order)": [ 25347 { 25348 "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType", 25349 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>" 25350 }, 25351 { 25352 "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter", 25353 "text": " <code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value" 25354 } 25355 ] 25356 }, 25357 "VkPipelineSampleLocationsStateCreateInfoEXT": { 25358 "(VK_EXT_sample_locations)": [ 25359 { 25360 "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType", 25361 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>" 25362 }, 25363 { 25364 "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter", 25365 "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure" 25366 } 25367 ] 25368 }, 25369 "VkSampleLocationsInfoEXT": { 25370 "(VK_EXT_sample_locations)": [ 25371 { 25372 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526", 25373 "text": " <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a bit value that is set in <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>sampleLocationSampleCounts</code>" 25374 }, 25375 { 25376 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527", 25377 "text": " <code>sampleLocationsCount</code> <strong class=\"purple\">must</strong> equal <span class=\"eq\"><code>sampleLocationsPerPixel</code> {times} <code>sampleLocationGridSize.width</code> {times} <code>sampleLocationGridSize.height</code></span>" 25378 }, 25379 { 25380 "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType", 25381 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>" 25382 }, 25383 { 25384 "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter", 25385 "text": " If <code>sampleLocationsPerPixel</code> is not <code>0</code>, <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 25386 }, 25387 { 25388 "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter", 25389 "text": " If <code>sampleLocationsCount</code> is not <code>0</code>, <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationsCount</code> <a href=\"#VkSampleLocationEXT\">VkSampleLocationEXT</a> structures" 25390 } 25391 ] 25392 }, 25393 "vkCmdSetSampleLocationsEXT": { 25394 "(VK_EXT_sample_locations)": [ 25395 { 25396 "vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529", 25397 "text": " The <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with" 25398 }, 25399 { 25400 "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530", 25401 "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code> then the current render pass <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the sample locations state pointed to by <code>pSampleLocationsInfo</code>" 25402 }, 25403 { 25404 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter", 25405 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25406 }, 25407 { 25408 "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter", 25409 "text": " <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a> structure" 25410 }, 25411 { 25412 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording", 25413 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25414 }, 25415 { 25416 "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool", 25417 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25418 } 25419 ] 25420 }, 25421 "vkGetPhysicalDeviceFragmentShadingRatesKHR": { 25422 "(VK_KHR_fragment_shading_rate)": [ 25423 { 25424 "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-physicalDevice-parameter", 25425 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 25426 }, 25427 { 25428 "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRateCount-parameter", 25429 "text": " <code>pFragmentShadingRateCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 25430 }, 25431 { 25432 "vuid": "VUID-vkGetPhysicalDeviceFragmentShadingRatesKHR-pFragmentShadingRates-parameter", 25433 "text": " If the value referenced by <code>pFragmentShadingRateCount</code> is not <code>0</code>, and <code>pFragmentShadingRates</code> is not <code>NULL</code>, <code>pFragmentShadingRates</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pFragmentShadingRateCount</code> <a href=\"#VkPhysicalDeviceFragmentShadingRateKHR\">VkPhysicalDeviceFragmentShadingRateKHR</a> structures" 25434 } 25435 ] 25436 }, 25437 "VkPhysicalDeviceFragmentShadingRateKHR": { 25438 "(VK_KHR_fragment_shading_rate)": [ 25439 { 25440 "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateKHR-sType-sType", 25441 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR</code>" 25442 }, 25443 { 25444 "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateKHR-pNext-pNext", 25445 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 25446 } 25447 ] 25448 }, 25449 "VkPipelineFragmentShadingRateStateCreateInfoKHR": { 25450 "(VK_KHR_fragment_shading_rate)": [ 25451 { 25452 "vuid": "VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-sType-sType", 25453 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR</code>" 25454 }, 25455 { 25456 "vuid": "VUID-VkPipelineFragmentShadingRateStateCreateInfoKHR-combinerOps-parameter", 25457 "text": " Any given element of <code>combinerOps</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value" 25458 } 25459 ] 25460 }, 25461 "vkCmdSetFragmentShadingRateKHR": { 25462 "(VK_KHR_fragment_shading_rate)": [ 25463 { 25464 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04507", 25465 "text": " If <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> is not enabled, <code>pFragmentSize</code>-><code>width</code> <strong class=\"purple\">must</strong> be <code>1</code>" 25466 }, 25467 { 25468 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04508", 25469 "text": " If <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a> is not enabled, <code>pFragmentSize</code>-><code>height</code> <strong class=\"purple\">must</strong> be <code>1</code>" 25470 }, 25471 { 25472 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pipelineFragmentShadingRate-04509", 25473 "text": " One of <a href=\"#features-pipelineFragmentShadingRate\"><code>pipelineFragmentShadingRate</code></a>, <a href=\"#features-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code></a>, or <a href=\"#features-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code></a> <strong class=\"purple\">must</strong> be enabled" 25474 }, 25475 { 25476 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-primitiveFragmentShadingRate-04510", 25477 "text": " If the <a href=\"#feature-primitiveFragmentShadingRate\"><code>primitiveFragmentShadingRate</code> feature</a> is not enabled, <code>combinerOps</code>[0] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>" 25478 }, 25479 { 25480 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-attachmentFragmentShadingRate-04511", 25481 "text": " If the <a href=\"#feature-attachmentFragmentShadingRate\"><code>attachmentFragmentShadingRate</code> feature</a> is not enabled, <code>combinerOps</code>[1] <strong class=\"purple\">must</strong> be <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code>" 25482 }, 25483 { 25484 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-fragmentSizeNonTrivialCombinerOps-04512", 25485 "text": " If the <a href=\"#limits-fragmentShadingRateNonTrivialCombinerOps\"><code>fragmentSizeNonTrivialCombinerOps</code></a> limit is not supported, elements of <code>combinerOps</code> <strong class=\"purple\">must</strong> be either <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR</code> or <code>VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR</code>" 25486 }, 25487 { 25488 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04513", 25489 "text": " <code>pFragmentSize</code>-><code>width</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>" 25490 }, 25491 { 25492 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04514", 25493 "text": " <code>pFragmentSize</code>-><code>height</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>1</code>" 25494 }, 25495 { 25496 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04515", 25497 "text": " <code>pFragmentSize</code>-><code>width</code> <strong class=\"purple\">must</strong> be a power-of-two value" 25498 }, 25499 { 25500 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04516", 25501 "text": " <code>pFragmentSize</code>-><code>height</code> <strong class=\"purple\">must</strong> be a power-of-two value" 25502 }, 25503 { 25504 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04517", 25505 "text": " <code>pFragmentSize</code>-><code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>" 25506 }, 25507 { 25508 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-04518", 25509 "text": " <code>pFragmentSize</code>-><code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>4</code>" 25510 }, 25511 { 25512 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-parameter", 25513 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25514 }, 25515 { 25516 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-pFragmentSize-parameter", 25517 "text": " <code>pFragmentSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkExtent2D\">VkExtent2D</a> structure" 25518 }, 25519 { 25520 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-combinerOps-parameter", 25521 "text": " Any given element of <code>combinerOps</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFragmentShadingRateCombinerOpKHR\">VkFragmentShadingRateCombinerOpKHR</a> value" 25522 }, 25523 { 25524 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-recording", 25525 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25526 }, 25527 { 25528 "vuid": "VUID-vkCmdSetFragmentShadingRateKHR-commandBuffer-cmdpool", 25529 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25530 } 25531 ] 25532 }, 25533 "VkPipelineViewportShadingRateImageStateCreateInfoNV": { 25534 "(VK_NV_shading_rate_image)": [ 25535 { 25536 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054", 25537 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 25538 }, 25539 { 25540 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055", 25541 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 25542 }, 25543 { 25544 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056", 25545 "text": " If <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater or equal to the <code>viewportCount</code> member of <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>" 25546 }, 25547 { 25548 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType", 25549 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV</code>" 25550 }, 25551 { 25552 "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-arraylength", 25553 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25554 } 25555 ] 25556 }, 25557 "vkCmdBindShadingRateImageNV": { 25558 "(VK_NV_shading_rate_image)": [ 25559 { 25560 "vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058", 25561 "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled" 25562 }, 25563 { 25564 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059", 25565 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle of type <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>" 25566 }, 25567 { 25568 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060", 25569 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have a format of <code>VK_FORMAT_R8_UINT</code>" 25570 }, 25571 { 25572 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061", 25573 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>" 25574 }, 25575 { 25576 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062", 25577 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time the subresource is accessed" 25578 }, 25579 { 25580 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063", 25581 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>" 25582 }, 25583 { 25584 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter", 25585 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25586 }, 25587 { 25588 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter", 25589 "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle" 25590 }, 25591 { 25592 "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter", 25593 "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value" 25594 }, 25595 { 25596 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording", 25597 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25598 }, 25599 { 25600 "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool", 25601 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25602 }, 25603 { 25604 "vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent", 25605 "text": " Both of <code>commandBuffer</code>, and <code>imageView</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 25606 } 25607 ] 25608 }, 25609 "vkCmdSetViewportShadingRatePaletteNV": { 25610 "(VK_NV_shading_rate_image)": [ 25611 { 25612 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064", 25613 "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled" 25614 }, 25615 { 25616 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02066", 25617 "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 25618 }, 25619 { 25620 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067", 25621 "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 25622 }, 25623 { 25624 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068", 25625 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25626 }, 25627 { 25628 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069", 25629 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 25630 }, 25631 { 25632 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter", 25633 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25634 }, 25635 { 25636 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter", 25637 "text": " <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <a href=\"#VkShadingRatePaletteNV\">VkShadingRatePaletteNV</a> structures" 25638 }, 25639 { 25640 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording", 25641 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25642 }, 25643 { 25644 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool", 25645 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25646 }, 25647 { 25648 "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength", 25649 "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25650 } 25651 ] 25652 }, 25653 "VkShadingRatePaletteNV": { 25654 "(VK_NV_shading_rate_image)": [ 25655 { 25656 "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071", 25657 "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRatePaletteSize</code>, inclusive" 25658 }, 25659 { 25660 "vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter", 25661 "text": " <code>pShadingRatePaletteEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shadingRatePaletteEntryCount</code> valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> values" 25662 }, 25663 { 25664 "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength", 25665 "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25666 } 25667 ] 25668 }, 25669 "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": { 25670 "(VK_NV_shading_rate_image)": [ 25671 { 25672 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072", 25673 "text": " If <code>sampleOrderType</code> is not <code>VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV</code>, <code>customSamplerOrderCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25674 }, 25675 { 25676 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234", 25677 "text": " The array <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> not contain two structures with matching values for both the <code>shadingRate</code> and <code>sampleCount</code> members" 25678 }, 25679 { 25680 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType", 25681 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV</code>" 25682 }, 25683 { 25684 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter", 25685 "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value" 25686 }, 25687 { 25688 "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter", 25689 "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a> structures" 25690 } 25691 ] 25692 }, 25693 "VkCoarseSampleOrderCustomNV": { 25694 "(VK_NV_shading_rate_image)": [ 25695 { 25696 "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073", 25697 "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a shading rate that generates fragments with more than one pixel" 25698 }, 25699 { 25700 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074", 25701 "text": " <code>sampleCount</code> <strong class=\"purple\">must</strong> correspond to a sample count enumerated in <a href=\"#VkSampleCountFlags\">VkSampleCountFlags</a> whose corresponding bit is set in <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>framebufferNoAttachmentsSampleCounts</code>" 25702 }, 25703 { 25704 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075", 25705 "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be equal to the product of <code>sampleCount</code>, the fragment width for <code>shadingRate</code>, and the fragment height for <code>shadingRate</code>" 25706 }, 25707 { 25708 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076", 25709 "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRateMaxCoarseSamples</code>" 25710 }, 25711 { 25712 "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077", 25713 "text": " The array <code>pSampleLocations</code> <strong class=\"purple\">must</strong> contain exactly one entry for every combination of valid values for <code>pixelX</code>, <code>pixelY</code>, and <code>sample</code> in the structure <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a>" 25714 }, 25715 { 25716 "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter", 25717 "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> value" 25718 }, 25719 { 25720 "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter", 25721 "text": " <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationCount</code> <a href=\"#VkCoarseSampleLocationNV\">VkCoarseSampleLocationNV</a> structures" 25722 }, 25723 { 25724 "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength", 25725 "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 25726 } 25727 ] 25728 }, 25729 "VkCoarseSampleLocationNV": { 25730 "(VK_NV_shading_rate_image)": [ 25731 { 25732 "vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078", 25733 "text": " <code>pixelX</code> <strong class=\"purple\">must</strong> be less than the width (in pixels) of the fragment" 25734 }, 25735 { 25736 "vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079", 25737 "text": " <code>pixelY</code> <strong class=\"purple\">must</strong> be less than the height (in pixels) of the fragment" 25738 }, 25739 { 25740 "vuid": "VUID-VkCoarseSampleLocationNV-sample-02080", 25741 "text": " <code>sample</code> <strong class=\"purple\">must</strong> be less than the number of coverage samples in each pixel belonging to the fragment" 25742 } 25743 ] 25744 }, 25745 "vkCmdSetCoarseSampleOrderNV": { 25746 "(VK_NV_shading_rate_image)": [ 25747 { 25748 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081", 25749 "text": " If <code>sampleOrderType</code> is not <code>VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV</code>, <code>customSamplerOrderCount</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25750 }, 25751 { 25752 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235", 25753 "text": " The array <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> not contain two structures with matching values for both the <code>shadingRate</code> and <code>sampleCount</code> members" 25754 }, 25755 { 25756 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter", 25757 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25758 }, 25759 { 25760 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter", 25761 "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value" 25762 }, 25763 { 25764 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter", 25765 "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a> structures" 25766 }, 25767 { 25768 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording", 25769 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25770 }, 25771 { 25772 "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool", 25773 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25774 } 25775 ] 25776 }, 25777 "VkPipelineRasterizationLineStateCreateInfoEXT": { 25778 "(VK_EXT_line_rasterization)": [ 25779 { 25780 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02768", 25781 "text": " If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT</code>, then the <a href=\"#features-rectangularLines\">rectangularLines</a> feature <strong class=\"purple\">must</strong> be enabled" 25782 }, 25783 { 25784 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02769", 25785 "text": " If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT</code>, then the <a href=\"#features-bresenhamLines\">bresenhamLines</a> feature <strong class=\"purple\">must</strong> be enabled" 25786 }, 25787 { 25788 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-02770", 25789 "text": " If <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT</code>, then the <a href=\"#features-bresenhamLines\">smoothLines</a> feature <strong class=\"purple\">must</strong> be enabled" 25790 }, 25791 { 25792 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02771", 25793 "text": " If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT</code>, then the <a href=\"#features-stippledRectangularLines\">stippledRectangularLines</a> feature <strong class=\"purple\">must</strong> be enabled" 25794 }, 25795 { 25796 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02772", 25797 "text": " If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT</code>, then the <a href=\"#features-stippledBresenhamLines\">stippledBresenhamLines</a> feature <strong class=\"purple\">must</strong> be enabled" 25798 }, 25799 { 25800 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02773", 25801 "text": " If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT</code>, then the <a href=\"#features-stippledSmoothLines\">stippledSmoothLines</a> feature <strong class=\"purple\">must</strong> be enabled" 25802 }, 25803 { 25804 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-stippledLineEnable-02774", 25805 "text": " If <code>stippledLineEnable</code> is <code>VK_TRUE</code> and <code>lineRasterizationMode</code> is <code>VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT</code>, then the <a href=\"#features-stippledRectangularLines\">stippledRectangularLines</a> feature <strong class=\"purple\">must</strong> be enabled and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>strictLines</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 25806 }, 25807 { 25808 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-sType-sType", 25809 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT</code>" 25810 }, 25811 { 25812 "vuid": "VUID-VkPipelineRasterizationLineStateCreateInfoEXT-lineRasterizationMode-parameter", 25813 "text": " <code>lineRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLineRasterizationModeEXT\">VkLineRasterizationModeEXT</a> value" 25814 } 25815 ] 25816 }, 25817 "vkCmdSetLineWidth": { 25818 "core": [ 25819 { 25820 "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788", 25821 "text": " If the <a href=\"#features-wideLines\">wide lines</a> feature is not enabled, <code>lineWidth</code> <strong class=\"purple\">must</strong> be <code>1.0</code>" 25822 }, 25823 { 25824 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter", 25825 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25826 }, 25827 { 25828 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording", 25829 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25830 }, 25831 { 25832 "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool", 25833 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25834 } 25835 ] 25836 }, 25837 "vkCmdSetLineStippleEXT": { 25838 "(VK_EXT_line_rasterization)": [ 25839 { 25840 "vuid": "VUID-vkCmdSetLineStippleEXT-lineStippleFactor-02776", 25841 "text": " <code>lineStippleFactor</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[1,256]</span>" 25842 }, 25843 { 25844 "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-parameter", 25845 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25846 }, 25847 { 25848 "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-recording", 25849 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25850 }, 25851 { 25852 "vuid": "VUID-vkCmdSetLineStippleEXT-commandBuffer-cmdpool", 25853 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25854 } 25855 ] 25856 }, 25857 "vkCmdSetFrontFaceEXT": { 25858 "(VK_EXT_extended_dynamic_state)": [ 25859 { 25860 "vuid": "VUID-vkCmdSetFrontFaceEXT-None-03383", 25861 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 25862 }, 25863 { 25864 "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-parameter", 25865 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25866 }, 25867 { 25868 "vuid": "VUID-vkCmdSetFrontFaceEXT-frontFace-parameter", 25869 "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value" 25870 }, 25871 { 25872 "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-recording", 25873 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25874 }, 25875 { 25876 "vuid": "VUID-vkCmdSetFrontFaceEXT-commandBuffer-cmdpool", 25877 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25878 } 25879 ] 25880 }, 25881 "vkCmdSetCullModeEXT": { 25882 "(VK_EXT_extended_dynamic_state)": [ 25883 { 25884 "vuid": "VUID-vkCmdSetCullModeEXT-None-03384", 25885 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 25886 }, 25887 { 25888 "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-parameter", 25889 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25890 }, 25891 { 25892 "vuid": "VUID-vkCmdSetCullModeEXT-cullMode-parameter", 25893 "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values" 25894 }, 25895 { 25896 "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-recording", 25897 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25898 }, 25899 { 25900 "vuid": "VUID-vkCmdSetCullModeEXT-commandBuffer-cmdpool", 25901 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25902 } 25903 ] 25904 }, 25905 "vkCmdSetDepthBias": { 25906 "core": [ 25907 { 25908 "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790", 25909 "text": " If the <a href=\"#features-depthBiasClamp\">depth bias clamping</a> feature is not enabled, <code>depthBiasClamp</code> <strong class=\"purple\">must</strong> be <code>0.0</code>" 25910 }, 25911 { 25912 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter", 25913 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25914 }, 25915 { 25916 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording", 25917 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25918 }, 25919 { 25920 "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool", 25921 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25922 } 25923 ] 25924 }, 25925 "VkPipelineRasterizationConservativeStateCreateInfoEXT": { 25926 "(VK_EXT_conservative_rasterization)": [ 25927 { 25928 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769", 25929 "text": " <code>extraPrimitiveOverestimationSize</code> <strong class=\"purple\">must</strong> be in the range of <code>0.0</code> to <code>VkPhysicalDeviceConservativeRasterizationPropertiesEXT</code>::<code>maxExtraPrimitiveOverestimationSize</code> inclusive" 25930 }, 25931 { 25932 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType", 25933 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>" 25934 }, 25935 { 25936 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask", 25937 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25938 }, 25939 { 25940 "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter", 25941 "text": " <code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value" 25942 } 25943 ] 25944 }, 25945 "VkPipelineDiscardRectangleStateCreateInfoEXT": { 25946 "(VK_EXT_discard_rectangles)": [ 25947 { 25948 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582", 25949 "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>" 25950 }, 25951 { 25952 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType", 25953 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>" 25954 }, 25955 { 25956 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask", 25957 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 25958 }, 25959 { 25960 "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter", 25961 "text": " <code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value" 25962 } 25963 ] 25964 }, 25965 "vkCmdSetDiscardRectangleEXT": { 25966 "(VK_EXT_discard_rectangles)": [ 25967 { 25968 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585", 25969 "text": " The sum of <code>firstDiscardRectangle</code> and <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>::<code>maxDiscardRectangles</code>" 25970 }, 25971 { 25972 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587", 25973 "text": " The <code>x</code> and <code>y</code> member of <code>offset</code> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>" 25974 }, 25975 { 25976 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588", 25977 "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 25978 }, 25979 { 25980 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589", 25981 "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 25982 }, 25983 { 25984 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter", 25985 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 25986 }, 25987 { 25988 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter", 25989 "text": " <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 25990 }, 25991 { 25992 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording", 25993 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 25994 }, 25995 { 25996 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool", 25997 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 25998 }, 25999 { 26000 "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength", 26001 "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 26002 } 26003 ] 26004 }, 26005 "vkCmdSetScissor": { 26006 "core": [ 26007 { 26008 "vuid": "VUID-vkCmdSetScissor-firstScissor-00591", 26009 "text": " <code>firstScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 26010 }, 26011 { 26012 "vuid": "VUID-vkCmdSetScissor-firstScissor-00592", 26013 "text": " The sum of <code>firstScissor</code> and <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 26014 }, 26015 { 26016 "vuid": "VUID-vkCmdSetScissor-firstScissor-00593", 26017 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>" 26018 }, 26019 { 26020 "vuid": "VUID-vkCmdSetScissor-scissorCount-00594", 26021 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 26022 }, 26023 { 26024 "vuid": "VUID-vkCmdSetScissor-x-00595", 26025 "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> member of any element of <code>pScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>" 26026 }, 26027 { 26028 "vuid": "VUID-vkCmdSetScissor-offset-00596", 26029 "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>" 26030 }, 26031 { 26032 "vuid": "VUID-vkCmdSetScissor-offset-00597", 26033 "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow for any element of <code>pScissors</code>" 26034 }, 26035 { 26036 "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter", 26037 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26038 }, 26039 { 26040 "vuid": "VUID-vkCmdSetScissor-pScissors-parameter", 26041 "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 26042 }, 26043 { 26044 "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording", 26045 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26046 }, 26047 { 26048 "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool", 26049 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26050 }, 26051 { 26052 "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength", 26053 "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 26054 } 26055 ] 26056 }, 26057 "VkPipelineViewportExclusiveScissorStateCreateInfoNV": { 26058 "(VK_NV_scissor_exclusive)": [ 26059 { 26060 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027", 26061 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 26062 }, 26063 { 26064 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028", 26065 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 26066 }, 26067 { 26068 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029", 26069 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or greater than or equal to the <code>viewportCount</code> member of <a href=\"#VkPipelineViewportStateCreateInfo\">VkPipelineViewportStateCreateInfo</a>" 26070 }, 26071 { 26072 "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType", 26073 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV</code>" 26074 } 26075 ] 26076 }, 26077 "vkCmdSetExclusiveScissorNV": { 26078 "(VK_NV_scissor_exclusive)": [ 26079 { 26080 "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031", 26081 "text": " The <a href=\"#features-exclusiveScissor\">exclusive scissor</a> feature <strong class=\"purple\">must</strong> be enabled" 26082 }, 26083 { 26084 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02033", 26085 "text": " <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>" 26086 }, 26087 { 26088 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034", 26089 "text": " The sum of <code>firstExclusiveScissor</code> and <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive" 26090 }, 26091 { 26092 "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035", 26093 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>" 26094 }, 26095 { 26096 "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036", 26097 "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>" 26098 }, 26099 { 26100 "vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037", 26101 "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> in each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>" 26102 }, 26103 { 26104 "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038", 26105 "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> + <code>extent.width</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 26106 }, 26107 { 26108 "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039", 26109 "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> + <code>extent.height</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow" 26110 }, 26111 { 26112 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter", 26113 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26114 }, 26115 { 26116 "vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter", 26117 "text": " <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 26118 }, 26119 { 26120 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording", 26121 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26122 }, 26123 { 26124 "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool", 26125 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26126 }, 26127 { 26128 "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength", 26129 "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 26130 } 26131 ] 26132 }, 26133 "VkPipelineDepthStencilStateCreateInfo": { 26134 "core": [ 26135 { 26136 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598", 26137 "text": " If the <a href=\"#features-depthBounds\">depth bounds testing</a> feature is not enabled, <code>depthBoundsTestEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 26138 }, 26139 { 26140 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType", 26141 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>" 26142 }, 26143 { 26144 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext", 26145 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 26146 }, 26147 { 26148 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask", 26149 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 26150 }, 26151 { 26152 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter", 26153 "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value" 26154 }, 26155 { 26156 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter", 26157 "text": " <code>front</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOpState\">VkStencilOpState</a> structure" 26158 }, 26159 { 26160 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter", 26161 "text": " <code>back</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOpState\">VkStencilOpState</a> structure" 26162 } 26163 ], 26164 "(VK_KHR_portability_subset)": [ 26165 { 26166 "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-separateStencilMaskRef-04453", 26167 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>separateStencilMaskRef</code> is <code>VK_FALSE</code>, and the value of <a href=\"#VkPipelineDepthStencilStateCreateInfo\">VkPipelineDepthStencilStateCreateInfo</a>::<code>stencilTestEnable</code> is <code>VK_TRUE</code>, and the value of <a href=\"#VkPipelineRasterizationStateCreateInfo\">VkPipelineRasterizationStateCreateInfo</a>::<code>cullMode</code> is <code>VK_CULL_MODE_NONE</code>, the value of <code>reference</code> in each of the <a href=\"#VkStencilOpState\">VkStencilOpState</a> structs in <code>front</code> and <code>back</code> <strong class=\"purple\">must</strong> be the same." 26168 } 26169 ] 26170 }, 26171 "vkCmdSetDepthBoundsTestEnableEXT": { 26172 "(VK_EXT_extended_dynamic_state)": [ 26173 { 26174 "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-None-03349", 26175 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 26176 }, 26177 { 26178 "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-parameter", 26179 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26180 }, 26181 { 26182 "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-recording", 26183 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26184 }, 26185 { 26186 "vuid": "VUID-vkCmdSetDepthBoundsTestEnableEXT-commandBuffer-cmdpool", 26187 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26188 } 26189 ] 26190 }, 26191 "vkCmdSetDepthBounds": { 26192 "(VK_EXT_depth_range_unrestricted)": [ 26193 { 26194 "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600", 26195 "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 26196 }, 26197 { 26198 "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601", 26199 "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 26200 } 26201 ], 26202 "!(VK_EXT_depth_range_unrestricted)": [ 26203 { 26204 "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508", 26205 "text": " <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 26206 }, 26207 { 26208 "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509", 26209 "text": " <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive" 26210 } 26211 ], 26212 "core": [ 26213 { 26214 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter", 26215 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26216 }, 26217 { 26218 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording", 26219 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26220 }, 26221 { 26222 "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool", 26223 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26224 } 26225 ] 26226 }, 26227 "vkCmdSetStencilTestEnableEXT": { 26228 "(VK_EXT_extended_dynamic_state)": [ 26229 { 26230 "vuid": "VUID-vkCmdSetStencilTestEnableEXT-None-03350", 26231 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 26232 }, 26233 { 26234 "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-parameter", 26235 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26236 }, 26237 { 26238 "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-recording", 26239 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26240 }, 26241 { 26242 "vuid": "VUID-vkCmdSetStencilTestEnableEXT-commandBuffer-cmdpool", 26243 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26244 } 26245 ] 26246 }, 26247 "vkCmdSetStencilOpEXT": { 26248 "(VK_EXT_extended_dynamic_state)": [ 26249 { 26250 "vuid": "VUID-vkCmdSetStencilOpEXT-None-03351", 26251 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 26252 }, 26253 { 26254 "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-parameter", 26255 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26256 }, 26257 { 26258 "vuid": "VUID-vkCmdSetStencilOpEXT-faceMask-parameter", 26259 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values" 26260 }, 26261 { 26262 "vuid": "VUID-vkCmdSetStencilOpEXT-faceMask-requiredbitmask", 26263 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 26264 }, 26265 { 26266 "vuid": "VUID-vkCmdSetStencilOpEXT-failOp-parameter", 26267 "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 26268 }, 26269 { 26270 "vuid": "VUID-vkCmdSetStencilOpEXT-passOp-parameter", 26271 "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 26272 }, 26273 { 26274 "vuid": "VUID-vkCmdSetStencilOpEXT-depthFailOp-parameter", 26275 "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 26276 }, 26277 { 26278 "vuid": "VUID-vkCmdSetStencilOpEXT-compareOp-parameter", 26279 "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value" 26280 }, 26281 { 26282 "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-recording", 26283 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26284 }, 26285 { 26286 "vuid": "VUID-vkCmdSetStencilOpEXT-commandBuffer-cmdpool", 26287 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26288 } 26289 ] 26290 }, 26291 "VkStencilOpState": { 26292 "core": [ 26293 { 26294 "vuid": "VUID-VkStencilOpState-failOp-parameter", 26295 "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 26296 }, 26297 { 26298 "vuid": "VUID-VkStencilOpState-passOp-parameter", 26299 "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 26300 }, 26301 { 26302 "vuid": "VUID-VkStencilOpState-depthFailOp-parameter", 26303 "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value" 26304 }, 26305 { 26306 "vuid": "VUID-VkStencilOpState-compareOp-parameter", 26307 "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value" 26308 } 26309 ] 26310 }, 26311 "vkCmdSetStencilCompareMask": { 26312 "core": [ 26313 { 26314 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter", 26315 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26316 }, 26317 { 26318 "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter", 26319 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values" 26320 }, 26321 { 26322 "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask", 26323 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 26324 }, 26325 { 26326 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording", 26327 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26328 }, 26329 { 26330 "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool", 26331 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26332 } 26333 ] 26334 }, 26335 "vkCmdSetStencilWriteMask": { 26336 "core": [ 26337 { 26338 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter", 26339 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26340 }, 26341 { 26342 "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter", 26343 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values" 26344 }, 26345 { 26346 "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask", 26347 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 26348 }, 26349 { 26350 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording", 26351 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26352 }, 26353 { 26354 "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool", 26355 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26356 } 26357 ] 26358 }, 26359 "vkCmdSetStencilReference": { 26360 "core": [ 26361 { 26362 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter", 26363 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26364 }, 26365 { 26366 "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter", 26367 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values" 26368 }, 26369 { 26370 "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask", 26371 "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 26372 }, 26373 { 26374 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording", 26375 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26376 }, 26377 { 26378 "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool", 26379 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26380 } 26381 ] 26382 }, 26383 "vkCmdSetDepthTestEnableEXT": { 26384 "(VK_EXT_extended_dynamic_state)": [ 26385 { 26386 "vuid": "VUID-vkCmdSetDepthTestEnableEXT-None-03352", 26387 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 26388 }, 26389 { 26390 "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-parameter", 26391 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26392 }, 26393 { 26394 "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-recording", 26395 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26396 }, 26397 { 26398 "vuid": "VUID-vkCmdSetDepthTestEnableEXT-commandBuffer-cmdpool", 26399 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26400 } 26401 ] 26402 }, 26403 "vkCmdSetDepthCompareOpEXT": { 26404 "(VK_EXT_extended_dynamic_state)": [ 26405 { 26406 "vuid": "VUID-vkCmdSetDepthCompareOpEXT-None-03353", 26407 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 26408 }, 26409 { 26410 "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-parameter", 26411 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26412 }, 26413 { 26414 "vuid": "VUID-vkCmdSetDepthCompareOpEXT-depthCompareOp-parameter", 26415 "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value" 26416 }, 26417 { 26418 "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-recording", 26419 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26420 }, 26421 { 26422 "vuid": "VUID-vkCmdSetDepthCompareOpEXT-commandBuffer-cmdpool", 26423 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26424 } 26425 ] 26426 }, 26427 "vkCmdSetDepthWriteEnableEXT": { 26428 "(VK_EXT_extended_dynamic_state)": [ 26429 { 26430 "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-None-03354", 26431 "text": " The <a href=\"#features-extendedDynamicState\">extendedDynamicState</a> feature <strong class=\"purple\">must</strong> be enabled" 26432 }, 26433 { 26434 "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-parameter", 26435 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26436 }, 26437 { 26438 "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-recording", 26439 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26440 }, 26441 { 26442 "vuid": "VUID-vkCmdSetDepthWriteEnableEXT-commandBuffer-cmdpool", 26443 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26444 } 26445 ] 26446 }, 26447 "VkPipelineRepresentativeFragmentTestStateCreateInfoNV": { 26448 "(VK_NV_representative_fragment_test)": [ 26449 { 26450 "vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType", 26451 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV</code>" 26452 } 26453 ] 26454 }, 26455 "VkPipelineCoverageToColorStateCreateInfoNV": { 26456 "(VK_NV_fragment_coverage_to_color)": [ 26457 { 26458 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404", 26459 "text": " If <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then the render pass subpass indicated by <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> and <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>subpass</code> <strong class=\"purple\">must</strong> have a color attachment at the location selected by <code>coverageToColorLocation</code>, with a <a href=\"#VkFormat\">VkFormat</a> of <code>VK_FORMAT_R8_UINT</code>, <code>VK_FORMAT_R8_SINT</code>, <code>VK_FORMAT_R16_UINT</code>, <code>VK_FORMAT_R16_SINT</code>, <code>VK_FORMAT_R32_UINT</code>, or <code>VK_FORMAT_R32_SINT</code>" 26460 }, 26461 { 26462 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType", 26463 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>" 26464 }, 26465 { 26466 "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask", 26467 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 26468 } 26469 ] 26470 }, 26471 "VkPipelineCoverageReductionStateCreateInfoNV": { 26472 "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [ 26473 { 26474 "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-sType-sType", 26475 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV</code>" 26476 }, 26477 { 26478 "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-flags-zerobitmask", 26479 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 26480 }, 26481 { 26482 "vuid": "VUID-VkPipelineCoverageReductionStateCreateInfoNV-coverageReductionMode-parameter", 26483 "text": " <code>coverageReductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageReductionModeNV\">VkCoverageReductionModeNV</a> value" 26484 } 26485 ] 26486 }, 26487 "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV": { 26488 "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [ 26489 { 26490 "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-physicalDevice-parameter", 26491 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 26492 }, 26493 { 26494 "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinationCount-parameter", 26495 "text": " <code>pCombinationCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 26496 }, 26497 { 26498 "vuid": "VUID-vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV-pCombinations-parameter", 26499 "text": " If the value referenced by <code>pCombinationCount</code> is not <code>0</code>, and <code>pCombinations</code> is not <code>NULL</code>, <code>pCombinations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCombinationCount</code> <a href=\"#VkFramebufferMixedSamplesCombinationNV\">VkFramebufferMixedSamplesCombinationNV</a> structures" 26500 } 26501 ] 26502 }, 26503 "VkFramebufferMixedSamplesCombinationNV": { 26504 "(VK_NV_framebuffer_mixed_samples)+(VK_NV_coverage_reduction_mode)": [ 26505 { 26506 "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-sType-sType", 26507 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV</code>" 26508 }, 26509 { 26510 "vuid": "VUID-VkFramebufferMixedSamplesCombinationNV-pNext-pNext", 26511 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 26512 } 26513 ] 26514 }, 26515 "VkPipelineCoverageModulationStateCreateInfoNV": { 26516 "(VK_NV_framebuffer_mixed_samples)": [ 26517 { 26518 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405", 26519 "text": " If <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, <code>coverageModulationTableCount</code> <strong class=\"purple\">must</strong> be equal to the number of rasterization samples divided by the number of color samples in the subpass" 26520 }, 26521 { 26522 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType", 26523 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>" 26524 }, 26525 { 26526 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask", 26527 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 26528 }, 26529 { 26530 "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter", 26531 "text": " <code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value" 26532 } 26533 ] 26534 }, 26535 "VkPipelineColorBlendStateCreateInfo": { 26536 "core": [ 26537 { 26538 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605", 26539 "text": " If the <a href=\"#features-independentBlend\">independent blending</a> feature is not enabled, all elements of <code>pAttachments</code> <strong class=\"purple\">must</strong> be identical" 26540 }, 26541 { 26542 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606", 26543 "text": " If the <a href=\"#features-logicOp\">logic operations</a> feature is not enabled, <code>logicOpEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 26544 }, 26545 { 26546 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607", 26547 "text": " If <code>logicOpEnable</code> is <code>VK_TRUE</code>, <code>logicOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLogicOp\">VkLogicOp</a> value" 26548 }, 26549 { 26550 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType", 26551 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>" 26552 }, 26553 { 26554 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext", 26555 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineColorBlendAdvancedStateCreateInfoEXT\">VkPipelineColorBlendAdvancedStateCreateInfoEXT</a>" 26556 }, 26557 { 26558 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-unique", 26559 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 26560 }, 26561 { 26562 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask", 26563 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 26564 }, 26565 { 26566 "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter", 26567 "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <a href=\"#VkPipelineColorBlendAttachmentState\">VkPipelineColorBlendAttachmentState</a> structures" 26568 } 26569 ] 26570 }, 26571 "VkPipelineColorBlendAttachmentState": { 26572 "core": [ 26573 { 26574 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608", 26575 "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>" 26576 }, 26577 { 26578 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609", 26579 "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>" 26580 }, 26581 { 26582 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610", 26583 "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>" 26584 }, 26585 { 26586 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611", 26587 "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>" 26588 }, 26589 { 26590 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter", 26591 "text": " <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value" 26592 }, 26593 { 26594 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter", 26595 "text": " <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value" 26596 }, 26597 { 26598 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter", 26599 "text": " <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value" 26600 }, 26601 { 26602 "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter", 26603 "text": " <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value" 26604 }, 26605 { 26606 "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter", 26607 "text": " <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value" 26608 }, 26609 { 26610 "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter", 26611 "text": " <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value" 26612 }, 26613 { 26614 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter", 26615 "text": " <code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values" 26616 } 26617 ], 26618 "(VK_EXT_blend_operation_advanced)": [ 26619 { 26620 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406", 26621 "text": " If either of <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> equal <code>alphaBlendOp</code>" 26622 }, 26623 { 26624 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407", 26625 "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>colorBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments" 26626 }, 26627 { 26628 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408", 26629 "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments" 26630 }, 26631 { 26632 "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409", 26633 "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendAllOperations</code> is <code>VK_FALSE</code>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_OP_ZERO_EXT</code>, <code>VK_BLEND_OP_SRC_EXT</code>, <code>VK_BLEND_OP_DST_EXT</code>, <code>VK_BLEND_OP_SRC_OVER_EXT</code>, <code>VK_BLEND_OP_DST_OVER_EXT</code>, <code>VK_BLEND_OP_SRC_IN_EXT</code>, <code>VK_BLEND_OP_DST_IN_EXT</code>, <code>VK_BLEND_OP_SRC_OUT_EXT</code>, <code>VK_BLEND_OP_DST_OUT_EXT</code>, <code>VK_BLEND_OP_SRC_ATOP_EXT</code>, <code>VK_BLEND_OP_DST_ATOP_EXT</code>, <code>VK_BLEND_OP_XOR_EXT</code>, <code>VK_BLEND_OP_INVERT_EXT</code>, <code>VK_BLEND_OP_INVERT_RGB_EXT</code>, <code>VK_BLEND_OP_LINEARDODGE_EXT</code>, <code>VK_BLEND_OP_LINEARBURN_EXT</code>, <code>VK_BLEND_OP_VIVIDLIGHT_EXT</code>, <code>VK_BLEND_OP_LINEARLIGHT_EXT</code>, <code>VK_BLEND_OP_PINLIGHT_EXT</code>, <code>VK_BLEND_OP_HARDMIX_EXT</code>, <code>VK_BLEND_OP_PLUS_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT</code>, <code>VK_BLEND_OP_PLUS_DARKER_EXT</code>, <code>VK_BLEND_OP_MINUS_EXT</code>, <code>VK_BLEND_OP_MINUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_CONTRAST_EXT</code>, <code>VK_BLEND_OP_INVERT_OVG_EXT</code>, <code>VK_BLEND_OP_RED_EXT</code>, <code>VK_BLEND_OP_GREEN_EXT</code>, or <code>VK_BLEND_OP_BLUE_EXT</code>" 26634 }, 26635 { 26636 "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410", 26637 "text": " If <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorAttachmentCount</code> of the subpass this pipeline is compiled against <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::advancedBlendMaxColorAttachments" 26638 } 26639 ], 26640 "(VK_KHR_portability_subset)": [ 26641 { 26642 "vuid": "VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04454", 26643 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>constantAlphaColorBlendFactors</code> is <code>VK_FALSE</code>, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code> or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>." 26644 }, 26645 { 26646 "vuid": "VUID-VkPipelineColorBlendAttachmentState-constantAlphaColorBlendFactors-04455", 26647 "text": " If the <code><a href=\"#VK_KHR_portability_subset\">[VK_KHR_portability_subset]</a></code> extension is enabled, and <a href=\"#VkPhysicalDevicePortabilitySubsetFeaturesKHR\">VkPhysicalDevicePortabilitySubsetFeaturesKHR</a>::<code>constantAlphaColorBlendFactors</code> is <code>VK_FALSE</code>, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_CONSTANT_ALPHA</code> or <code>VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA</code>." 26648 } 26649 ] 26650 }, 26651 "vkCmdSetBlendConstants": { 26652 "core": [ 26653 { 26654 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter", 26655 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26656 }, 26657 { 26658 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording", 26659 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26660 }, 26661 { 26662 "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool", 26663 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations" 26664 } 26665 ] 26666 }, 26667 "VkPipelineColorBlendAdvancedStateCreateInfoEXT": { 26668 "(VK_EXT_blend_operation_advanced)": [ 26669 { 26670 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424", 26671 "text": " If the <a href=\"#limits-advancedBlendNonPremultipliedSrcColor\">non-premultiplied source color</a> property is not supported, <code>srcPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 26672 }, 26673 { 26674 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425", 26675 "text": " If the <a href=\"#limits-advancedBlendNonPremultipliedDstColor\">non-premultiplied destination color</a> property is not supported, <code>dstPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>" 26676 }, 26677 { 26678 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426", 26679 "text": " If the <a href=\"#limits-advancedBlendCorrelatedOverlap\">correlated overlap</a> property is not supported, <code>blendOverlap</code> <strong class=\"purple\">must</strong> be <code>VK_BLEND_OVERLAP_UNCORRELATED_EXT</code>" 26680 }, 26681 { 26682 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType", 26683 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>" 26684 }, 26685 { 26686 "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter", 26687 "text": " <code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value" 26688 } 26689 ] 26690 }, 26691 "vkCmdDispatch": { 26692 "core": [ 26693 { 26694 "vuid": "VUID-vkCmdDispatch-magFilter-04553", 26695 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 26696 }, 26697 { 26698 "vuid": "VUID-vkCmdDispatch-None-02691", 26699 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 26700 }, 26701 { 26702 "vuid": "VUID-vkCmdDispatch-None-02697", 26703 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 26704 }, 26705 { 26706 "vuid": "VUID-vkCmdDispatch-None-02698", 26707 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 26708 }, 26709 { 26710 "vuid": "VUID-vkCmdDispatch-None-02699", 26711 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 26712 }, 26713 { 26714 "vuid": "VUID-vkCmdDispatch-None-02700", 26715 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 26716 }, 26717 { 26718 "vuid": "VUID-vkCmdDispatch-commandBuffer-02701", 26719 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 26720 }, 26721 { 26722 "vuid": "VUID-vkCmdDispatch-None-02859", 26723 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 26724 }, 26725 { 26726 "vuid": "VUID-vkCmdDispatch-None-02702", 26727 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 26728 }, 26729 { 26730 "vuid": "VUID-vkCmdDispatch-None-02703", 26731 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 26732 }, 26733 { 26734 "vuid": "VUID-vkCmdDispatch-None-02704", 26735 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 26736 }, 26737 { 26738 "vuid": "VUID-vkCmdDispatch-None-02705", 26739 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 26740 }, 26741 { 26742 "vuid": "VUID-vkCmdDispatch-None-02706", 26743 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 26744 }, 26745 { 26746 "vuid": "VUID-vkCmdDispatch-None-04115", 26747 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 26748 }, 26749 { 26750 "vuid": "VUID-vkCmdDispatch-OpImageWrite-04469", 26751 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 26752 }, 26753 { 26754 "vuid": "VUID-vkCmdDispatch-groupCountX-00386", 26755 "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 26756 }, 26757 { 26758 "vuid": "VUID-vkCmdDispatch-groupCountY-00387", 26759 "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 26760 }, 26761 { 26762 "vuid": "VUID-vkCmdDispatch-groupCountZ-00388", 26763 "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 26764 }, 26765 { 26766 "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter", 26767 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26768 }, 26769 { 26770 "vuid": "VUID-vkCmdDispatch-commandBuffer-recording", 26771 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26772 }, 26773 { 26774 "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool", 26775 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 26776 }, 26777 { 26778 "vuid": "VUID-vkCmdDispatch-renderpass", 26779 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 26780 } 26781 ], 26782 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 26783 { 26784 "vuid": "VUID-vkCmdDispatch-None-02692", 26785 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 26786 } 26787 ], 26788 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 26789 { 26790 "vuid": "VUID-vkCmdDispatch-None-02693", 26791 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 26792 } 26793 ], 26794 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 26795 { 26796 "vuid": "VUID-vkCmdDispatch-filterCubic-02694", 26797 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 26798 }, 26799 { 26800 "vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02695", 26801 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 26802 } 26803 ], 26804 "(VK_NV_corner_sampled_image)": [ 26805 { 26806 "vuid": "VUID-vkCmdDispatch-flags-02696", 26807 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 26808 } 26809 ], 26810 "(VK_VERSION_1_1)": [ 26811 { 26812 "vuid": "VUID-vkCmdDispatch-commandBuffer-02707", 26813 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 26814 }, 26815 { 26816 "vuid": "VUID-vkCmdDispatch-commandBuffer-02712", 26817 "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource" 26818 }, 26819 { 26820 "vuid": "VUID-vkCmdDispatch-commandBuffer-02713", 26821 "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource" 26822 } 26823 ], 26824 "(VK_EXT_shader_image_atomic_int64)": [ 26825 { 26826 "vuid": "VUID-vkCmdDispatch-SampledType-04470", 26827 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 26828 }, 26829 { 26830 "vuid": "VUID-vkCmdDispatch-SampledType-04471", 26831 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 26832 }, 26833 { 26834 "vuid": "VUID-vkCmdDispatch-SampledType-04472", 26835 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 26836 }, 26837 { 26838 "vuid": "VUID-vkCmdDispatch-SampledType-04473", 26839 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 26840 }, 26841 { 26842 "vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04474", 26843 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 26844 }, 26845 { 26846 "vuid": "VUID-vkCmdDispatch-sparseImageInt64Atomics-04475", 26847 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 26848 } 26849 ] 26850 }, 26851 "vkCmdDispatchIndirect": { 26852 "core": [ 26853 { 26854 "vuid": "VUID-vkCmdDispatchIndirect-magFilter-04553", 26855 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 26856 }, 26857 { 26858 "vuid": "VUID-vkCmdDispatchIndirect-None-02691", 26859 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 26860 }, 26861 { 26862 "vuid": "VUID-vkCmdDispatchIndirect-None-02697", 26863 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 26864 }, 26865 { 26866 "vuid": "VUID-vkCmdDispatchIndirect-None-02698", 26867 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 26868 }, 26869 { 26870 "vuid": "VUID-vkCmdDispatchIndirect-None-02699", 26871 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 26872 }, 26873 { 26874 "vuid": "VUID-vkCmdDispatchIndirect-None-02700", 26875 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 26876 }, 26877 { 26878 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02701", 26879 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 26880 }, 26881 { 26882 "vuid": "VUID-vkCmdDispatchIndirect-None-02859", 26883 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 26884 }, 26885 { 26886 "vuid": "VUID-vkCmdDispatchIndirect-None-02702", 26887 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 26888 }, 26889 { 26890 "vuid": "VUID-vkCmdDispatchIndirect-None-02703", 26891 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 26892 }, 26893 { 26894 "vuid": "VUID-vkCmdDispatchIndirect-None-02704", 26895 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 26896 }, 26897 { 26898 "vuid": "VUID-vkCmdDispatchIndirect-None-02705", 26899 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 26900 }, 26901 { 26902 "vuid": "VUID-vkCmdDispatchIndirect-None-02706", 26903 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 26904 }, 26905 { 26906 "vuid": "VUID-vkCmdDispatchIndirect-None-04115", 26907 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 26908 }, 26909 { 26910 "vuid": "VUID-vkCmdDispatchIndirect-OpImageWrite-04469", 26911 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 26912 }, 26913 { 26914 "vuid": "VUID-vkCmdDispatchIndirect-buffer-02708", 26915 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 26916 }, 26917 { 26918 "vuid": "VUID-vkCmdDispatchIndirect-buffer-02709", 26919 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 26920 }, 26921 { 26922 "vuid": "VUID-vkCmdDispatchIndirect-offset-02710", 26923 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 26924 }, 26925 { 26926 "vuid": "VUID-vkCmdDispatchIndirect-offset-00407", 26927 "text": " The sum of <code>offset</code> and the size of <code>VkDispatchIndirectCommand</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 26928 }, 26929 { 26930 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter", 26931 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 26932 }, 26933 { 26934 "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter", 26935 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 26936 }, 26937 { 26938 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording", 26939 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 26940 }, 26941 { 26942 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool", 26943 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 26944 }, 26945 { 26946 "vuid": "VUID-vkCmdDispatchIndirect-renderpass", 26947 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 26948 }, 26949 { 26950 "vuid": "VUID-vkCmdDispatchIndirect-commonparent", 26951 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 26952 } 26953 ], 26954 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 26955 { 26956 "vuid": "VUID-vkCmdDispatchIndirect-None-02692", 26957 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 26958 } 26959 ], 26960 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 26961 { 26962 "vuid": "VUID-vkCmdDispatchIndirect-None-02693", 26963 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 26964 } 26965 ], 26966 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 26967 { 26968 "vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02694", 26969 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 26970 }, 26971 { 26972 "vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02695", 26973 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 26974 } 26975 ], 26976 "(VK_NV_corner_sampled_image)": [ 26977 { 26978 "vuid": "VUID-vkCmdDispatchIndirect-flags-02696", 26979 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 26980 } 26981 ], 26982 "(VK_VERSION_1_1)": [ 26983 { 26984 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02707", 26985 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 26986 }, 26987 { 26988 "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02711", 26989 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 26990 } 26991 ], 26992 "(VK_EXT_shader_image_atomic_int64)": [ 26993 { 26994 "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04470", 26995 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 26996 }, 26997 { 26998 "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04471", 26999 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 27000 }, 27001 { 27002 "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04472", 27003 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 27004 }, 27005 { 27006 "vuid": "VUID-vkCmdDispatchIndirect-SampledType-04473", 27007 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 27008 }, 27009 { 27010 "vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04474", 27011 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 27012 }, 27013 { 27014 "vuid": "VUID-vkCmdDispatchIndirect-sparseImageInt64Atomics-04475", 27015 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 27016 } 27017 ] 27018 }, 27019 "VkDispatchIndirectCommand": { 27020 "core": [ 27021 { 27022 "vuid": "VUID-VkDispatchIndirectCommand-x-00417", 27023 "text": " <code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 27024 }, 27025 { 27026 "vuid": "VUID-VkDispatchIndirectCommand-y-00418", 27027 "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 27028 }, 27029 { 27030 "vuid": "VUID-VkDispatchIndirectCommand-z-00419", 27031 "text": " <code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 27032 } 27033 ] 27034 }, 27035 "vkCmdDispatchBase": { 27036 "core": [ 27037 { 27038 "vuid": "VUID-vkCmdDispatchBase-magFilter-04553", 27039 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 27040 }, 27041 { 27042 "vuid": "VUID-vkCmdDispatchBase-None-02691", 27043 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 27044 }, 27045 { 27046 "vuid": "VUID-vkCmdDispatchBase-None-02697", 27047 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 27048 }, 27049 { 27050 "vuid": "VUID-vkCmdDispatchBase-None-02698", 27051 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 27052 }, 27053 { 27054 "vuid": "VUID-vkCmdDispatchBase-None-02699", 27055 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 27056 }, 27057 { 27058 "vuid": "VUID-vkCmdDispatchBase-None-02700", 27059 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 27060 }, 27061 { 27062 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02701", 27063 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 27064 }, 27065 { 27066 "vuid": "VUID-vkCmdDispatchBase-None-02859", 27067 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 27068 }, 27069 { 27070 "vuid": "VUID-vkCmdDispatchBase-None-02702", 27071 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 27072 }, 27073 { 27074 "vuid": "VUID-vkCmdDispatchBase-None-02703", 27075 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 27076 }, 27077 { 27078 "vuid": "VUID-vkCmdDispatchBase-None-02704", 27079 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 27080 }, 27081 { 27082 "vuid": "VUID-vkCmdDispatchBase-None-02705", 27083 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 27084 }, 27085 { 27086 "vuid": "VUID-vkCmdDispatchBase-None-02706", 27087 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 27088 }, 27089 { 27090 "vuid": "VUID-vkCmdDispatchBase-None-04115", 27091 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 27092 }, 27093 { 27094 "vuid": "VUID-vkCmdDispatchBase-OpImageWrite-04469", 27095 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 27096 }, 27097 { 27098 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421", 27099 "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 27100 }, 27101 { 27102 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422", 27103 "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 27104 }, 27105 { 27106 "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423", 27107 "text": " <code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 27108 }, 27109 { 27110 "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424", 27111 "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] minus <code>baseGroupX</code>" 27112 }, 27113 { 27114 "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425", 27115 "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] minus <code>baseGroupY</code>" 27116 }, 27117 { 27118 "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426", 27119 "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] minus <code>baseGroupZ</code>" 27120 }, 27121 { 27122 "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427", 27123 "text": " If any of <code>baseGroupX</code>, <code>baseGroupY</code>, or <code>baseGroupZ</code> are not zero, then the bound compute pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag" 27124 } 27125 ], 27126 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 27127 { 27128 "vuid": "VUID-vkCmdDispatchBase-None-02692", 27129 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 27130 } 27131 ], 27132 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 27133 { 27134 "vuid": "VUID-vkCmdDispatchBase-None-02693", 27135 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 27136 } 27137 ], 27138 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 27139 { 27140 "vuid": "VUID-vkCmdDispatchBase-filterCubic-02694", 27141 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 27142 }, 27143 { 27144 "vuid": "VUID-vkCmdDispatchBase-filterCubicMinmax-02695", 27145 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 27146 } 27147 ], 27148 "(VK_NV_corner_sampled_image)": [ 27149 { 27150 "vuid": "VUID-vkCmdDispatchBase-flags-02696", 27151 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 27152 } 27153 ], 27154 "(VK_VERSION_1_1)": [ 27155 { 27156 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-02707", 27157 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 27158 } 27159 ], 27160 "(VK_EXT_shader_image_atomic_int64)": [ 27161 { 27162 "vuid": "VUID-vkCmdDispatchBase-SampledType-04470", 27163 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 27164 }, 27165 { 27166 "vuid": "VUID-vkCmdDispatchBase-SampledType-04471", 27167 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 27168 }, 27169 { 27170 "vuid": "VUID-vkCmdDispatchBase-SampledType-04472", 27171 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 27172 }, 27173 { 27174 "vuid": "VUID-vkCmdDispatchBase-SampledType-04473", 27175 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 27176 }, 27177 { 27178 "vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04474", 27179 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 27180 }, 27181 { 27182 "vuid": "VUID-vkCmdDispatchBase-sparseImageInt64Atomics-04475", 27183 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 27184 } 27185 ], 27186 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 27187 { 27188 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter", 27189 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 27190 }, 27191 { 27192 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording", 27193 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 27194 }, 27195 { 27196 "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool", 27197 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 27198 }, 27199 { 27200 "vuid": "VUID-vkCmdDispatchBase-renderpass", 27201 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 27202 } 27203 ] 27204 }, 27205 "vkCreateIndirectCommandsLayoutNV": { 27206 "(VK_NV_device_generated_commands)": [ 27207 { 27208 "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-deviceGeneratedCommands-02929", 27209 "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 27210 }, 27211 { 27212 "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-device-parameter", 27213 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 27214 }, 27215 { 27216 "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pCreateInfo-parameter", 27217 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIndirectCommandsLayoutCreateInfoNV\">VkIndirectCommandsLayoutCreateInfoNV</a> structure" 27218 }, 27219 { 27220 "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pAllocator-parameter", 27221 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 27222 }, 27223 { 27224 "vuid": "VUID-vkCreateIndirectCommandsLayoutNV-pIndirectCommandsLayout-parameter", 27225 "text": " <code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle" 27226 } 27227 ] 27228 }, 27229 "VkIndirectCommandsLayoutCreateInfoNV": { 27230 "(VK_NV_device_generated_commands)": [ 27231 { 27232 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-02930", 27233 "text": " The <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 27234 }, 27235 { 27236 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-02931", 27237 "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsTokenCount</code>" 27238 }, 27239 { 27240 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02932", 27241 "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</code> it <strong class=\"purple\">must</strong> be the first element of the array and there <strong class=\"purple\">must</strong> be only a single element of such token type" 27242 }, 27243 { 27244 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02933", 27245 "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV</code> there <strong class=\"purple\">must</strong> be only a single element of such token type" 27246 }, 27247 { 27248 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02934", 27249 "text": " All state tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> occur prior work provoking tokens (<code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV</code>)" 27250 }, 27251 { 27252 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-02935", 27253 "text": " The content of <code>pTokens</code> <strong class=\"purple\">must</strong> include one single work provoking token that is compatible with the <code>pipelineBindPoint</code>" 27254 }, 27255 { 27256 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-02936", 27257 "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsStreamCount</code>" 27258 }, 27259 { 27260 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-02937", 27261 "text": " each element of <code>pStreamStrides</code> <strong class=\"purple\">must</strong> be greater than `0`and less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsStreamStride</code>. Furthermore the alignment of each token input <strong class=\"purple\">must</strong> be ensured" 27262 }, 27263 { 27264 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-sType-sType", 27265 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV</code>" 27266 }, 27267 { 27268 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pNext-pNext", 27269 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 27270 }, 27271 { 27272 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-parameter", 27273 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNV\">VkIndirectCommandsLayoutUsageFlagBitsNV</a> values" 27274 }, 27275 { 27276 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-flags-requiredbitmask", 27277 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 27278 }, 27279 { 27280 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pipelineBindPoint-parameter", 27281 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 27282 }, 27283 { 27284 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pTokens-parameter", 27285 "text": " <code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <a href=\"#VkIndirectCommandsLayoutTokenNV\">VkIndirectCommandsLayoutTokenNV</a> structures" 27286 }, 27287 { 27288 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-pStreamStrides-parameter", 27289 "text": " <code>pStreamStrides</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>streamCount</code> <code>uint32_t</code> values" 27290 }, 27291 { 27292 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-tokenCount-arraylength", 27293 "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 27294 }, 27295 { 27296 "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNV-streamCount-arraylength", 27297 "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 27298 } 27299 ] 27300 }, 27301 "vkDestroyIndirectCommandsLayoutNV": { 27302 "(VK_NV_device_generated_commands)": [ 27303 { 27304 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02938", 27305 "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution" 27306 }, 27307 { 27308 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02939", 27309 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 27310 }, 27311 { 27312 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-02940", 27313 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>indirectCommandsLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 27314 }, 27315 { 27316 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-deviceGeneratedCommands-02941", 27317 "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 27318 }, 27319 { 27320 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-device-parameter", 27321 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 27322 }, 27323 { 27324 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parameter", 27325 "text": " If <code>indirectCommandsLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle" 27326 }, 27327 { 27328 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-pAllocator-parameter", 27329 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 27330 }, 27331 { 27332 "vuid": "VUID-vkDestroyIndirectCommandsLayoutNV-indirectCommandsLayout-parent", 27333 "text": " If <code>indirectCommandsLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 27334 } 27335 ] 27336 }, 27337 "VkIndirectCommandsStreamNV": { 27338 "(VK_NV_device_generated_commands)": [ 27339 { 27340 "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02942", 27341 "text": " The <code>buffer</code>’s usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 27342 }, 27343 { 27344 "vuid": "VUID-VkIndirectCommandsStreamNV-offset-02943", 27345 "text": " The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minIndirectCommandsBufferOffsetAlignment</code>" 27346 }, 27347 { 27348 "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-02975", 27349 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 27350 }, 27351 { 27352 "vuid": "VUID-VkIndirectCommandsStreamNV-buffer-parameter", 27353 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 27354 } 27355 ] 27356 }, 27357 "VkBindShaderGroupIndirectCommandNV": { 27358 "(VK_NV_device_generated_commands)": [ 27359 { 27360 "vuid": "VUID-VkBindShaderGroupIndirectCommandNV-None-02944", 27361 "text": " The current bound graphics pipeline, as well as the pipelines it may reference, <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code>" 27362 }, 27363 { 27364 "vuid": "VUID-VkBindShaderGroupIndirectCommandNV-index-02945", 27365 "text": " The <code>index</code> <strong class=\"purple\">must</strong> be within range of the accessible shader groups of the current bound graphics pipeline. See <a href=\"#vkCmdBindPipelineShaderGroupNV\">vkCmdBindPipelineShaderGroupNV</a> for further details" 27366 } 27367 ] 27368 }, 27369 "VkBindIndexBufferIndirectCommandNV": { 27370 "(VK_NV_device_generated_commands)": [ 27371 { 27372 "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02946", 27373 "text": " The buffer’s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> bit set" 27374 }, 27375 { 27376 "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-bufferAddress-02947", 27377 "text": " The <code>bufferAddress</code> <strong class=\"purple\">must</strong> be aligned to the <code>indexType</code> used" 27378 }, 27379 { 27380 "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-None-02948", 27381 "text": " Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 27382 }, 27383 { 27384 "vuid": "VUID-VkBindIndexBufferIndirectCommandNV-indexType-parameter", 27385 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value" 27386 } 27387 ] 27388 }, 27389 "VkBindVertexBufferIndirectCommandNV": { 27390 "(VK_NV_device_generated_commands)": [ 27391 { 27392 "vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02949", 27393 "text": " The buffer’s usage flag from which the address was acquired <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> bit set" 27394 }, 27395 { 27396 "vuid": "VUID-VkBindVertexBufferIndirectCommandNV-None-02950", 27397 "text": " Each element of the buffer from which the address was acquired and that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 27398 } 27399 ] 27400 }, 27401 "VkIndirectCommandsLayoutTokenNV": { 27402 "(VK_NV_device_generated_commands)": [ 27403 { 27404 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-stream-02951", 27405 "text": " <code>stream</code> <strong class=\"purple\">must</strong> be smaller than <code>VkIndirectCommandsLayoutCreateInfoNV</code>::<code>streamCount</code>" 27406 }, 27407 { 27408 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-offset-02952", 27409 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>maxIndirectCommandsTokenOffset</code>" 27410 }, 27411 { 27412 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02976", 27413 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV</code>, <code>vertexBindingUnit</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands" 27414 }, 27415 { 27416 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02977", 27417 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantPipelineLayout</code> <strong class=\"purple\">must</strong> be valid" 27418 }, 27419 { 27420 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02978", 27421 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 27422 }, 27423 { 27424 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02979", 27425 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 27426 }, 27427 { 27428 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02980", 27429 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantOffset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>" 27430 }, 27431 { 27432 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02981", 27433 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, <code>pushconstantSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>pushconstantOffset</code>" 27434 }, 27435 { 27436 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02982", 27437 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, for each byte in the range specified by <code>pushconstantOffset</code> and <code>pushconstantSize</code> and for each shader stage in <code>pushconstantShaderStageFlags</code>, there <strong class=\"purple\">must</strong> be a push constant range in <code>pushconstantPipelineLayout</code> that includes that byte and that stage" 27438 }, 27439 { 27440 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02983", 27441 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, for each byte in the range specified by <code>pushconstantOffset</code> and <code>pushconstantSize</code> and for each push constant range that overlaps that byte, <code>pushconstantShaderStageFlags</code> <strong class=\"purple\">must</strong> include all stages in that push constant range’s <a href=\"#VkPushConstantRange\">VkPushConstantRange</a>::<code>pushconstantShaderStageFlags</code>" 27442 }, 27443 { 27444 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-02984", 27445 "text": " If <code>tokenType</code> is <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV</code>, <code>indirectStateFlags</code> <strong class=\"purple\">must</strong> not be ´0´" 27446 }, 27447 { 27448 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-sType-sType", 27449 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV</code>" 27450 }, 27451 { 27452 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pNext-pNext", 27453 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 27454 }, 27455 { 27456 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-tokenType-parameter", 27457 "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNV\">VkIndirectCommandsTokenTypeNV</a> value" 27458 }, 27459 { 27460 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantPipelineLayout-parameter", 27461 "text": " If <code>pushconstantPipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pushconstantPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineLayout\">VkPipelineLayout</a> handle" 27462 }, 27463 { 27464 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pushconstantShaderStageFlags-parameter", 27465 "text": " <code>pushconstantShaderStageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values" 27466 }, 27467 { 27468 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-indirectStateFlags-parameter", 27469 "text": " <code>indirectStateFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectStateFlagBitsNV\">VkIndirectStateFlagBitsNV</a> values" 27470 }, 27471 { 27472 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypes-parameter", 27473 "text": " If <code>indexTypeCount</code> is not <code>0</code>, <code>pIndexTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indexTypeCount</code> valid <a href=\"#VkIndexType\">VkIndexType</a> values" 27474 }, 27475 { 27476 "vuid": "VUID-VkIndirectCommandsLayoutTokenNV-pIndexTypeValues-parameter", 27477 "text": " If <code>indexTypeCount</code> is not <code>0</code>, <code>pIndexTypeValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indexTypeCount</code> <code>uint32_t</code> values" 27478 } 27479 ] 27480 }, 27481 "vkGetGeneratedCommandsMemoryRequirementsNV": { 27482 "(VK_NV_device_generated_commands)": [ 27483 { 27484 "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-deviceGeneratedCommands-02906", 27485 "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 27486 }, 27487 { 27488 "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-device-parameter", 27489 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 27490 }, 27491 { 27492 "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pInfo-parameter", 27493 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoNV\">VkGeneratedCommandsMemoryRequirementsInfoNV</a> structure" 27494 }, 27495 { 27496 "vuid": "VUID-vkGetGeneratedCommandsMemoryRequirementsNV-pMemoryRequirements-parameter", 27497 "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMemoryRequirements2\">VkMemoryRequirements2</a> structure" 27498 } 27499 ] 27500 }, 27501 "VkGeneratedCommandsMemoryRequirementsInfoNV": { 27502 "(VK_NV_device_generated_commands)": [ 27503 { 27504 "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-maxSequencesCount-02907", 27505 "text": " <code>maxSequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>maxIndirectSequenceCount</code>" 27506 }, 27507 { 27508 "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-sType-sType", 27509 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV</code>" 27510 }, 27511 { 27512 "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pNext-pNext", 27513 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 27514 }, 27515 { 27516 "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipelineBindPoint-parameter", 27517 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 27518 }, 27519 { 27520 "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-pipeline-parameter", 27521 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 27522 }, 27523 { 27524 "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-indirectCommandsLayout-parameter", 27525 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle" 27526 }, 27527 { 27528 "vuid": "VUID-VkGeneratedCommandsMemoryRequirementsInfoNV-commonparent", 27529 "text": " Both of <code>indirectCommandsLayout</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 27530 } 27531 ] 27532 }, 27533 "vkCmdExecuteGeneratedCommandsNV": { 27534 "core": [ 27535 { 27536 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-magFilter-04553", 27537 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 27538 }, 27539 { 27540 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02691", 27541 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 27542 }, 27543 { 27544 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02697", 27545 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 27546 }, 27547 { 27548 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02698", 27549 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 27550 }, 27551 { 27552 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02699", 27553 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 27554 }, 27555 { 27556 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02700", 27557 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 27558 }, 27559 { 27560 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02701", 27561 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 27562 }, 27563 { 27564 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02859", 27565 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 27566 }, 27567 { 27568 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02702", 27569 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 27570 }, 27571 { 27572 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02703", 27573 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 27574 }, 27575 { 27576 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02704", 27577 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 27578 }, 27579 { 27580 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02705", 27581 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 27582 }, 27583 { 27584 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02706", 27585 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 27586 }, 27587 { 27588 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04115", 27589 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 27590 }, 27591 { 27592 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-OpImageWrite-04469", 27593 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 27594 }, 27595 { 27596 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderPass-02684", 27597 "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 27598 }, 27599 { 27600 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-subpass-02685", 27601 "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>" 27602 }, 27603 { 27604 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02686", 27605 "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set" 27606 }, 27607 { 27608 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02687", 27609 "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command" 27610 }, 27611 { 27612 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04007", 27613 "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> have either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> buffers bound" 27614 }, 27615 { 27616 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-04008", 27617 "text": " If the <a href=\"#features-nullDescriptor\">nullDescriptor</a> feature is not enabled, all vertex input bindings accessed via vertex input variables declared in the vertex shader entry point’s interface <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 27618 }, 27619 { 27620 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02721", 27621 "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>" 27622 }, 27623 { 27624 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-isPreprocessed-02908", 27625 "text": " If <code>isPreprocessed</code> is <code>VK_TRUE</code> then <a href=\"#vkCmdPreprocessGeneratedCommandsNV\">vkCmdPreprocessGeneratedCommandsNV</a> <strong class=\"purple\">must</strong> have already been executed on the device, using the same <code>pGeneratedCommandsInfo</code> content as well as the content of the input buffers it references (all except <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a>::<code>preprocessBuffer</code>). Furthermore <code>pGeneratedCommandsInfo</code>`s <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV</code> bit set" 27626 }, 27627 { 27628 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pipeline-02909", 27629 "text": " <code>VkGeneratedCommandsInfoNV</code>::<code>pipeline</code> <strong class=\"purple\">must</strong> match the current bound pipeline at <code>VkGeneratedCommandsInfoNV</code>::<code>pipelineBindPoint</code>" 27630 }, 27631 { 27632 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-deviceGeneratedCommands-02911", 27633 "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 27634 } 27635 ], 27636 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 27637 { 27638 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02692", 27639 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 27640 } 27641 ], 27642 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 27643 { 27644 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02693", 27645 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 27646 } 27647 ], 27648 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 27649 { 27650 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubic-02694", 27651 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 27652 }, 27653 { 27654 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-filterCubicMinmax-02695", 27655 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 27656 } 27657 ], 27658 "(VK_NV_corner_sampled_image)": [ 27659 { 27660 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-flags-02696", 27661 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 27662 } 27663 ], 27664 "(VK_VERSION_1_1)": [ 27665 { 27666 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02707", 27667 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 27668 }, 27669 { 27670 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-02970", 27671 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 27672 } 27673 ], 27674 "(VK_EXT_shader_image_atomic_int64)": [ 27675 { 27676 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04470", 27677 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 27678 }, 27679 { 27680 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04471", 27681 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 27682 }, 27683 { 27684 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04472", 27685 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 27686 }, 27687 { 27688 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-SampledType-04473", 27689 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 27690 }, 27691 { 27692 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04474", 27693 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 27694 }, 27695 { 27696 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sparseImageInt64Atomics-04475", 27697 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 27698 } 27699 ], 27700 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 27701 { 27702 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-maxMultiviewInstanceIndex-02688", 27703 "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>" 27704 } 27705 ], 27706 "(VK_EXT_sample_locations)": [ 27707 { 27708 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-sampleLocationsEnable-02689", 27709 "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set" 27710 } 27711 ], 27712 "(VK_EXT_extended_dynamic_state)": [ 27713 { 27714 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03417", 27715 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>scissorCount</code> of the pipeline" 27716 }, 27717 { 27718 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-scissorCount-03418", 27719 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, then <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>VkPipelineViewportStateCreateInfo</code>::<code>viewportCount</code> of the pipeline" 27720 }, 27721 { 27722 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-03419", 27723 "text": " If the bound graphics pipeline state was created with both the <code>VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic states enabled then both <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> and <a href=\"#vkCmdSetScissorWithCountEXT\">vkCmdSetScissorWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> match the <code>scissorCount</code> parameter of <code>vkCmdSetScissorWithCountEXT</code>" 27724 }, 27725 { 27726 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveTopology-03420", 27727 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT</code> dynamic state enabled then <a href=\"#vkCmdSetPrimitiveTopologyEXT\">vkCmdSetPrimitiveTopologyEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>primitiveTopology</code> parameter of <code>vkCmdSetPrimitiveTopologyEXT</code> <strong class=\"purple\">must</strong> be of the same <a href=\"#drawing-primitive-topology-class\">topology class</a> as the pipeline <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a>::<code>topology</code> state" 27728 } 27729 ], 27730 "(VK_EXT_extended_dynamic_state)+(VK_NV_clip_space_w_scaling)": [ 27731 { 27732 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04137", 27733 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 27734 }, 27735 { 27736 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04138", 27737 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWScalingNV\">vkCmdSetViewportWScalingNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 27738 } 27739 ], 27740 "(VK_EXT_extended_dynamic_state)+(VK_NV_shading_rate_image)": [ 27741 { 27742 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04139", 27743 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, but not the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 27744 }, 27745 { 27746 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-viewportCount-04140", 27747 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> and <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic states enabled then the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportShadingRatePaletteNV\">vkCmdSetViewportShadingRatePaletteNV</a> <strong class=\"purple\">must</strong> be greater than or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 27748 } 27749 ], 27750 "(VK_EXT_extended_dynamic_state)+(VK_NV_viewport_swizzle)": [ 27751 { 27752 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04141", 27753 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>::<code>viewportCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 27754 } 27755 ], 27756 "(VK_EXT_extended_dynamic_state)+(VK_NV_scissor_exclusive)": [ 27757 { 27758 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-VkPipelineVieportCreateInfo-04142", 27759 "text": " If the bound graphics pipeline state was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled and an instance of <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a> chained from <code>VkPipelineVieportCreateInfo</code>, then the bound graphics pipeline <strong class=\"purple\">must</strong> have been created with <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>::<code>exclusiveScissorCount</code> greater or equal to the <code>viewportCount</code> parameter in the last call to <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a>" 27760 } 27761 ], 27762 "(VK_KHR_fragment_shading_rate+VK_EXT_extended_dynamic_state)": [ 27763 { 27764 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-primitiveFragmentShadingRateWithMultipleViewports-04552", 27765 "text": " If the <a href=\"#limits-primitiveFragmentShadingRateWithMultipleViewports\"><code>primitiveFragmentShadingRateWithMultipleViewports</code></a> limit is not supported, the bound graphics pipeline was created with the <code>VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT</code> dynamic state enabled, and any of the shader stages of the bound graphics pipeline write to the <code>PrimitiveShadingRateKHR</code> built-in, then <a href=\"#vkCmdSetViewportWithCountEXT\">vkCmdSetViewportWithCountEXT</a> <strong class=\"purple\">must</strong> have been called in the current command buffer prior to this draw command, and the <code>viewportCount</code> parameter of <code>vkCmdSetViewportWithCountEXT</code> <strong class=\"purple\">must</strong> be <code>1</code>" 27766 } 27767 ], 27768 "(VK_EXT_transform_feedback)": [ 27769 { 27770 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-None-02910", 27771 "text": " Transform feedback <strong class=\"purple\">must</strong> not be active" 27772 } 27773 ], 27774 "(VK_NV_device_generated_commands)": [ 27775 { 27776 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-parameter", 27777 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 27778 }, 27779 { 27780 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-pGeneratedCommandsInfo-parameter", 27781 "text": " <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a> structure" 27782 }, 27783 { 27784 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-recording", 27785 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 27786 }, 27787 { 27788 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-commandBuffer-cmdpool", 27789 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 27790 }, 27791 { 27792 "vuid": "VUID-vkCmdExecuteGeneratedCommandsNV-renderpass", 27793 "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance" 27794 } 27795 ] 27796 }, 27797 "VkGeneratedCommandsInfoNV": { 27798 "(VK_NV_device_generated_commands)": [ 27799 { 27800 "vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-02912", 27801 "text": " The provided <code>pipeline</code> <strong class=\"purple\">must</strong> match the pipeline bound at execution time" 27802 }, 27803 { 27804 "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02913", 27805 "text": " If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with multiple shader groups" 27806 }, 27807 { 27808 "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02914", 27809 "text": " If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV</code>, then the <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV</code> set in <code>VkGraphicsPipelineCreateInfo</code>::<code>flags</code>" 27810 }, 27811 { 27812 "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-02915", 27813 "text": " If the <code>indirectCommandsLayout</code> uses a token of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV</code>, then the <code>pipeline</code>`s <code>VkPipelineLayout</code> <strong class=\"purple\">must</strong> match the <a href=\"#VkIndirectCommandsLayoutTokenNV\">VkIndirectCommandsLayoutTokenNV</a>::<code>pushconstantPipelineLayout</code>" 27814 }, 27815 { 27816 "vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-02916", 27817 "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>’s <code>streamCount</code>" 27818 }, 27819 { 27820 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCount-02917", 27821 "text": " <code>sequencesCount</code> <strong class=\"purple\">must</strong> be less or equal to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>maxIndirectSequenceCount</code> and <a href=\"#VkGeneratedCommandsMemoryRequirementsInfoNV\">VkGeneratedCommandsMemoryRequirementsInfoNV</a>::<code>maxSequencesCount</code> that was used to determine the <code>preprocessSize</code>" 27822 }, 27823 { 27824 "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02918", 27825 "text": " <code>preprocessBuffer</code> <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set in its usage flag" 27826 }, 27827 { 27828 "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessOffset-02919", 27829 "text": " <code>preprocessOffset</code> <strong class=\"purple\">must</strong> be aligned to <a href=\"#VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV\">VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</a>::<code>minIndirectCommandsBufferOffsetAlignment</code>" 27830 }, 27831 { 27832 "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-02971", 27833 "text": " If <code>preprocessBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 27834 }, 27835 { 27836 "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessSize-02920", 27837 "text": " <code>preprocessSize</code> <strong class=\"purple\">must</strong> be at least equal to the memory requirement`s size returned by <a href=\"#vkGetGeneratedCommandsMemoryRequirementsNV\">vkGetGeneratedCommandsMemoryRequirementsNV</a> using the matching inputs (<code>indirectCommandsLayout</code>, …​) as within this structure" 27838 }, 27839 { 27840 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02921", 27841 "text": " <code>sequencesCountBuffer</code> <strong class=\"purple\">can</strong> be set if the actual used count of sequences is sourced from the provided buffer. In that case the <code>sequencesCount</code> serves as upper bound" 27842 }, 27843 { 27844 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02922", 27845 "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 27846 }, 27847 { 27848 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02923", 27849 "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minSequencesCountBufferOffsetAlignment</code>" 27850 }, 27851 { 27852 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-02972", 27853 "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 27854 }, 27855 { 27856 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02924", 27857 "text": " If <code>indirectCommandsLayout</code>’s <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV</code> is set, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be set otherwise it <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 27858 }, 27859 { 27860 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02925", 27861 "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 27862 }, 27863 { 27864 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02926", 27865 "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV</code>::<code>minSequencesIndexBufferOffsetAlignment</code>" 27866 }, 27867 { 27868 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-02973", 27869 "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 27870 }, 27871 { 27872 "vuid": "VUID-VkGeneratedCommandsInfoNV-sType-sType", 27873 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV</code>" 27874 }, 27875 { 27876 "vuid": "VUID-VkGeneratedCommandsInfoNV-pNext-pNext", 27877 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 27878 }, 27879 { 27880 "vuid": "VUID-VkGeneratedCommandsInfoNV-pipelineBindPoint-parameter", 27881 "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value" 27882 }, 27883 { 27884 "vuid": "VUID-VkGeneratedCommandsInfoNV-pipeline-parameter", 27885 "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipeline\">VkPipeline</a> handle" 27886 }, 27887 { 27888 "vuid": "VUID-VkGeneratedCommandsInfoNV-indirectCommandsLayout-parameter", 27889 "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsLayoutNV\">VkIndirectCommandsLayoutNV</a> handle" 27890 }, 27891 { 27892 "vuid": "VUID-VkGeneratedCommandsInfoNV-pStreams-parameter", 27893 "text": " <code>pStreams</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>streamCount</code> valid <a href=\"#VkIndirectCommandsStreamNV\">VkIndirectCommandsStreamNV</a> structures" 27894 }, 27895 { 27896 "vuid": "VUID-VkGeneratedCommandsInfoNV-preprocessBuffer-parameter", 27897 "text": " <code>preprocessBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 27898 }, 27899 { 27900 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesCountBuffer-parameter", 27901 "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 27902 }, 27903 { 27904 "vuid": "VUID-VkGeneratedCommandsInfoNV-sequencesIndexBuffer-parameter", 27905 "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 27906 }, 27907 { 27908 "vuid": "VUID-VkGeneratedCommandsInfoNV-streamCount-arraylength", 27909 "text": " <code>streamCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 27910 }, 27911 { 27912 "vuid": "VUID-VkGeneratedCommandsInfoNV-commonparent", 27913 "text": " Each of <code>indirectCommandsLayout</code>, <code>pipeline</code>, <code>preprocessBuffer</code>, <code>sequencesCountBuffer</code>, and <code>sequencesIndexBuffer</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 27914 } 27915 ] 27916 }, 27917 "vkCmdPreprocessGeneratedCommandsNV": { 27918 "(VK_NV_device_generated_commands)+(VK_VERSION_1_1)": [ 27919 { 27920 "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974", 27921 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 27922 } 27923 ], 27924 "(VK_NV_device_generated_commands)": [ 27925 { 27926 "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-02927", 27927 "text": " <code>pGeneratedCommandsInfo</code>`s <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV</code> bit set" 27928 }, 27929 { 27930 "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-deviceGeneratedCommands-02928", 27931 "text": " The <a href=\"#features-deviceGeneratedCommands\"><code>VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV</code>::<code>deviceGeneratedCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 27932 }, 27933 { 27934 "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-parameter", 27935 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 27936 }, 27937 { 27938 "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-pGeneratedCommandsInfo-parameter", 27939 "text": " <code>pGeneratedCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkGeneratedCommandsInfoNV\">VkGeneratedCommandsInfoNV</a> structure" 27940 }, 27941 { 27942 "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-recording", 27943 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 27944 }, 27945 { 27946 "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-cmdpool", 27947 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 27948 }, 27949 { 27950 "vuid": "VUID-vkCmdPreprocessGeneratedCommandsNV-renderpass", 27951 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 27952 } 27953 ] 27954 }, 27955 "vkGetPhysicalDeviceSparseImageFormatProperties": { 27956 "core": [ 27957 { 27958 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094", 27959 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> when the image is created" 27960 }, 27961 { 27962 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter", 27963 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 27964 }, 27965 { 27966 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter", 27967 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 27968 }, 27969 { 27970 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter", 27971 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 27972 }, 27973 { 27974 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter", 27975 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 27976 }, 27977 { 27978 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter", 27979 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 27980 }, 27981 { 27982 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask", 27983 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 27984 }, 27985 { 27986 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter", 27987 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 27988 }, 27989 { 27990 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter", 27991 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 27992 }, 27993 { 27994 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter", 27995 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkSparseImageFormatProperties\">VkSparseImageFormatProperties</a> structures" 27996 } 27997 ] 27998 }, 27999 "vkGetPhysicalDeviceSparseImageFormatProperties2": { 28000 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 28001 { 28002 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter", 28003 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 28004 }, 28005 { 28006 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter", 28007 "text": " <code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSparseImageFormatInfo2\">VkPhysicalDeviceSparseImageFormatInfo2</a> structure" 28008 }, 28009 { 28010 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter", 28011 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 28012 }, 28013 { 28014 "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter", 28015 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkSparseImageFormatProperties2\">VkSparseImageFormatProperties2</a> structures" 28016 } 28017 ] 28018 }, 28019 "VkPhysicalDeviceSparseImageFormatInfo2": { 28020 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 28021 { 28022 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095", 28023 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> when the image is created" 28024 }, 28025 { 28026 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType", 28027 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>" 28028 }, 28029 { 28030 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext", 28031 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28032 }, 28033 { 28034 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter", 28035 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 28036 }, 28037 { 28038 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter", 28039 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 28040 }, 28041 { 28042 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter", 28043 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 28044 }, 28045 { 28046 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter", 28047 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 28048 }, 28049 { 28050 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask", 28051 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 28052 }, 28053 { 28054 "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter", 28055 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 28056 } 28057 ] 28058 }, 28059 "VkSparseImageFormatProperties2": { 28060 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 28061 { 28062 "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType", 28063 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>" 28064 }, 28065 { 28066 "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext", 28067 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28068 } 28069 ] 28070 }, 28071 "vkGetImageSparseMemoryRequirements": { 28072 "core": [ 28073 { 28074 "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter", 28075 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 28076 }, 28077 { 28078 "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter", 28079 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 28080 }, 28081 { 28082 "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter", 28083 "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 28084 }, 28085 { 28086 "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter", 28087 "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <a href=\"#VkSparseImageMemoryRequirements\">VkSparseImageMemoryRequirements</a> structures" 28088 }, 28089 { 28090 "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent", 28091 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 28092 } 28093 ] 28094 }, 28095 "vkGetImageSparseMemoryRequirements2": { 28096 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 28097 { 28098 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter", 28099 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 28100 }, 28101 { 28102 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter", 28103 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImageSparseMemoryRequirementsInfo2\">VkImageSparseMemoryRequirementsInfo2</a> structure" 28104 }, 28105 { 28106 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter", 28107 "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 28108 }, 28109 { 28110 "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter", 28111 "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <a href=\"#VkSparseImageMemoryRequirements2\">VkSparseImageMemoryRequirements2</a> structures" 28112 } 28113 ] 28114 }, 28115 "VkImageSparseMemoryRequirementsInfo2": { 28116 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 28117 { 28118 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType", 28119 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>" 28120 }, 28121 { 28122 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext", 28123 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28124 }, 28125 { 28126 "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter", 28127 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 28128 } 28129 ] 28130 }, 28131 "VkSparseImageMemoryRequirements2": { 28132 "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [ 28133 { 28134 "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType", 28135 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>" 28136 }, 28137 { 28138 "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext", 28139 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28140 } 28141 ] 28142 }, 28143 "VkSparseMemoryBind": { 28144 "core": [ 28145 { 28146 "vuid": "VUID-VkSparseMemoryBind-memory-01096", 28147 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the resource, as described in section <a href=\"#resources-association\">Resource Memory Association</a>" 28148 }, 28149 { 28150 "vuid": "VUID-VkSparseMemoryBind-memory-01097", 28151 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> not have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code> bit set" 28152 }, 28153 { 28154 "vuid": "VUID-VkSparseMemoryBind-size-01098", 28155 "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 28156 }, 28157 { 28158 "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099", 28159 "text": " <code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource" 28160 }, 28161 { 28162 "vuid": "VUID-VkSparseMemoryBind-size-01100", 28163 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>" 28164 }, 28165 { 28166 "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101", 28167 "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>" 28168 }, 28169 { 28170 "vuid": "VUID-VkSparseMemoryBind-size-01102", 28171 "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>" 28172 }, 28173 { 28174 "vuid": "VUID-VkSparseMemoryBind-memory-parameter", 28175 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 28176 }, 28177 { 28178 "vuid": "VUID-VkSparseMemoryBind-flags-parameter", 28179 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values" 28180 } 28181 ], 28182 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 28183 { 28184 "vuid": "VUID-VkSparseMemoryBind-memory-02730", 28185 "text": " If <code>memory</code> was created with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> or <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the resource was created" 28186 }, 28187 { 28188 "vuid": "VUID-VkSparseMemoryBind-memory-02731", 28189 "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code> or <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the resource was created" 28190 } 28191 ] 28192 }, 28193 "VkSparseBufferMemoryBindInfo": { 28194 "core": [ 28195 { 28196 "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter", 28197 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 28198 }, 28199 { 28200 "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter", 28201 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseMemoryBind\">VkSparseMemoryBind</a> structures" 28202 }, 28203 { 28204 "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength", 28205 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 28206 } 28207 ] 28208 }, 28209 "VkSparseImageOpaqueMemoryBindInfo": { 28210 "core": [ 28211 { 28212 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103", 28213 "text": " If the <code>flags</code> member of any element of <code>pBinds</code> contains <code>VK_SPARSE_MEMORY_BIND_METADATA_BIT</code>, the binding range defined <strong class=\"purple\">must</strong> be within the mip tail region of the metadata aspect of <code>image</code>" 28214 }, 28215 { 28216 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter", 28217 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 28218 }, 28219 { 28220 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter", 28221 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseMemoryBind\">VkSparseMemoryBind</a> structures" 28222 }, 28223 { 28224 "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength", 28225 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 28226 } 28227 ] 28228 }, 28229 "VkSparseImageMemoryBindInfo": { 28230 "core": [ 28231 { 28232 "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722", 28233 "text": " The <code>subresource.mipLevel</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 28234 }, 28235 { 28236 "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723", 28237 "text": " The <code>subresource.arrayLayer</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created" 28238 }, 28239 { 28240 "vuid": "VUID-VkSparseImageMemoryBindInfo-image-02901", 28241 "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> set" 28242 }, 28243 { 28244 "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter", 28245 "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImage\">VkImage</a> handle" 28246 }, 28247 { 28248 "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter", 28249 "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <a href=\"#VkSparseImageMemoryBind\">VkSparseImageMemoryBind</a> structures" 28250 }, 28251 { 28252 "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength", 28253 "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 28254 } 28255 ] 28256 }, 28257 "VkSparseImageMemoryBind": { 28258 "core": [ 28259 { 28260 "vuid": "VUID-VkSparseImageMemoryBind-memory-01104", 28261 "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, and if any other resources are bound to ranges of <code>memory</code>, the range of <code>memory</code> being bound <strong class=\"purple\">must</strong> not overlap with those bound ranges" 28262 }, 28263 { 28264 "vuid": "VUID-VkSparseImageMemoryBind-memory-01105", 28265 "text": " <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the calling command’s <code>image</code>, as described in section <a href=\"#resources-association\">Resource Memory Association</a>" 28266 }, 28267 { 28268 "vuid": "VUID-VkSparseImageMemoryBind-subresource-01106", 28269 "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid image subresource for <code>image</code> (see <a href=\"#resources-image-views\">Image Views</a>)" 28270 }, 28271 { 28272 "vuid": "VUID-VkSparseImageMemoryBind-offset-01107", 28273 "text": " <code>offset.x</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of the image" 28274 }, 28275 { 28276 "vuid": "VUID-VkSparseImageMemoryBind-extent-01108", 28277 "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of the image, or else <span class=\"eq\">(<code>extent.width</code> + <code>offset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the image subresource" 28278 }, 28279 { 28280 "vuid": "VUID-VkSparseImageMemoryBind-offset-01109", 28281 "text": " <code>offset.y</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of the image" 28282 }, 28283 { 28284 "vuid": "VUID-VkSparseImageMemoryBind-extent-01110", 28285 "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of the image, or else <span class=\"eq\">(<code>extent.height</code> + <code>offset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the image subresource" 28286 }, 28287 { 28288 "vuid": "VUID-VkSparseImageMemoryBind-offset-01111", 28289 "text": " <code>offset.z</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block depth (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.depth</code>) of the image" 28290 }, 28291 { 28292 "vuid": "VUID-VkSparseImageMemoryBind-extent-01112", 28293 "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block depth of the image, or else <span class=\"eq\">(<code>extent.depth</code> + <code>offset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the image subresource" 28294 }, 28295 { 28296 "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter", 28297 "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageSubresource\">VkImageSubresource</a> structure" 28298 }, 28299 { 28300 "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter", 28301 "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle" 28302 }, 28303 { 28304 "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter", 28305 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values" 28306 } 28307 ], 28308 "(VK_VERSION_1_1,VK_KHR_external_memory)": [ 28309 { 28310 "vuid": "VUID-VkSparseImageMemoryBind-memory-02732", 28311 "text": " If <code>memory</code> was created with <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> not equal to <code>0</code>, at least one handle type it contained <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when the image was created" 28312 }, 28313 { 28314 "vuid": "VUID-VkSparseImageMemoryBind-memory-02733", 28315 "text": " If <code>memory</code> was created by a memory import operation, the external handle type of the imported memory <strong class=\"purple\">must</strong> also have been set in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code> when <code>image</code> was created" 28316 } 28317 ] 28318 }, 28319 "vkQueueBindSparse": { 28320 "core": [ 28321 { 28322 "vuid": "VUID-vkQueueBindSparse-fence-01113", 28323 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled" 28324 }, 28325 { 28326 "vuid": "VUID-vkQueueBindSparse-fence-01114", 28327 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue" 28328 }, 28329 { 28330 "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115", 28331 "text": " Each element of the <code>pSignalSemaphores</code> member of each element of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device" 28332 }, 28333 { 28334 "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116", 28335 "text": " When a semaphore wait operation referring to a binary semaphore defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pBindInfo</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore" 28336 }, 28337 { 28338 "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117", 28339 "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> member referring to a binary semaphore <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution" 28340 }, 28341 { 28342 "vuid": "VUID-vkQueueBindSparse-queue-parameter", 28343 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 28344 }, 28345 { 28346 "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter", 28347 "text": " If <code>bindInfoCount</code> is not <code>0</code>, <code>pBindInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <a href=\"#VkBindSparseInfo\">VkBindSparseInfo</a> structures" 28348 }, 28349 { 28350 "vuid": "VUID-vkQueueBindSparse-fence-parameter", 28351 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 28352 }, 28353 { 28354 "vuid": "VUID-vkQueueBindSparse-queuetype", 28355 "text": " The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations" 28356 }, 28357 { 28358 "vuid": "VUID-vkQueueBindSparse-commonparent", 28359 "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 28360 } 28361 ], 28362 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 28363 { 28364 "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-03245", 28365 "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution" 28366 } 28367 ] 28368 }, 28369 "VkBindSparseInfo": { 28370 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 28371 { 28372 "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03246", 28373 "text": " If any element of <code>pWaitSemaphores</code> or <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure" 28374 }, 28375 { 28376 "vuid": "VUID-VkBindSparseInfo-pNext-03247", 28377 "text": " If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pWaitSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then its <code>waitSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>waitSemaphoreCount</code>" 28378 }, 28379 { 28380 "vuid": "VUID-VkBindSparseInfo-pNext-03248", 28381 "text": " If the <code>pNext</code> chain of this structure includes a <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a> structure and any element of <code>pSignalSemaphores</code> was created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> then its <code>signalSemaphoreValueCount</code> member <strong class=\"purple\">must</strong> equal <code>signalSemaphoreCount</code>" 28382 }, 28383 { 28384 "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03249", 28385 "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pSignalSemaphoreValues <strong class=\"purple\">must</strong> have a value greater than the current value of the semaphore when the <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> is executed" 28386 }, 28387 { 28388 "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-03250", 28389 "text": " For each element of <code>pWaitSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pWaitSemaphoreValues <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>" 28390 }, 28391 { 28392 "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-03251", 28393 "text": " For each element of <code>pSignalSemaphores</code> created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_TIMELINE</code> the corresponding element of <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>::pSignalSemaphoreValues <strong class=\"purple\">must</strong> have a value which does not differ from the current value of the semaphore or from the value of any outstanding semaphore wait or signal operation on that semaphore by more than <a href=\"#limits-maxTimelineSemaphoreValueDifference\"><code>maxTimelineSemaphoreValueDifference</code></a>" 28394 } 28395 ], 28396 "core": [ 28397 { 28398 "vuid": "VUID-VkBindSparseInfo-sType-sType", 28399 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>" 28400 }, 28401 { 28402 "vuid": "VUID-VkBindSparseInfo-pNext-pNext", 28403 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupBindSparseInfo\">VkDeviceGroupBindSparseInfo</a> or <a href=\"#VkTimelineSemaphoreSubmitInfo\">VkTimelineSemaphoreSubmitInfo</a>" 28404 }, 28405 { 28406 "vuid": "VUID-VkBindSparseInfo-sType-unique", 28407 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 28408 }, 28409 { 28410 "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter", 28411 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles" 28412 }, 28413 { 28414 "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter", 28415 "text": " If <code>bufferBindCount</code> is not <code>0</code>, <code>pBufferBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferBindCount</code> valid <a href=\"#VkSparseBufferMemoryBindInfo\">VkSparseBufferMemoryBindInfo</a> structures" 28416 }, 28417 { 28418 "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter", 28419 "text": " If <code>imageOpaqueBindCount</code> is not <code>0</code>, <code>pImageOpaqueBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageOpaqueBindCount</code> valid <a href=\"#VkSparseImageOpaqueMemoryBindInfo\">VkSparseImageOpaqueMemoryBindInfo</a> structures" 28420 }, 28421 { 28422 "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter", 28423 "text": " If <code>imageBindCount</code> is not <code>0</code>, <code>pImageBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageBindCount</code> valid <a href=\"#VkSparseImageMemoryBindInfo\">VkSparseImageMemoryBindInfo</a> structures" 28424 }, 28425 { 28426 "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter", 28427 "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles" 28428 }, 28429 { 28430 "vuid": "VUID-VkBindSparseInfo-commonparent", 28431 "text": " Both of the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 28432 } 28433 ] 28434 }, 28435 "VkDeviceGroupBindSparseInfo": { 28436 "(VK_VERSION_1_1,VK_KHR_device_group)": [ 28437 { 28438 "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118", 28439 "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices" 28440 }, 28441 { 28442 "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119", 28443 "text": " Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>" 28444 }, 28445 { 28446 "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType", 28447 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>" 28448 } 28449 ] 28450 }, 28451 "vkCreateAndroidSurfaceKHR": { 28452 "(VK_KHR_surface)+(VK_KHR_android_surface)": [ 28453 { 28454 "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter", 28455 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28456 }, 28457 { 28458 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter", 28459 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAndroidSurfaceCreateInfoKHR\">VkAndroidSurfaceCreateInfoKHR</a> structure" 28460 }, 28461 { 28462 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter", 28463 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28464 }, 28465 { 28466 "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter", 28467 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28468 } 28469 ] 28470 }, 28471 "VkAndroidSurfaceCreateInfoKHR": { 28472 "(VK_KHR_surface)+(VK_KHR_android_surface)": [ 28473 { 28474 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248", 28475 "text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <code>ANativeWindow</code>" 28476 }, 28477 { 28478 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType", 28479 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>" 28480 }, 28481 { 28482 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext", 28483 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28484 }, 28485 { 28486 "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask", 28487 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28488 } 28489 ] 28490 }, 28491 "vkCreateWaylandSurfaceKHR": { 28492 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [ 28493 { 28494 "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter", 28495 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28496 }, 28497 { 28498 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter", 28499 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkWaylandSurfaceCreateInfoKHR\">VkWaylandSurfaceCreateInfoKHR</a> structure" 28500 }, 28501 { 28502 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter", 28503 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28504 }, 28505 { 28506 "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter", 28507 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28508 } 28509 ] 28510 }, 28511 "VkWaylandSurfaceCreateInfoKHR": { 28512 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [ 28513 { 28514 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304", 28515 "text": " <code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>" 28516 }, 28517 { 28518 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305", 28519 "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>" 28520 }, 28521 { 28522 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType", 28523 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>" 28524 }, 28525 { 28526 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext", 28527 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28528 }, 28529 { 28530 "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask", 28531 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28532 } 28533 ] 28534 }, 28535 "vkCreateWin32SurfaceKHR": { 28536 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [ 28537 { 28538 "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter", 28539 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28540 }, 28541 { 28542 "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter", 28543 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkWin32SurfaceCreateInfoKHR\">VkWin32SurfaceCreateInfoKHR</a> structure" 28544 }, 28545 { 28546 "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter", 28547 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28548 }, 28549 { 28550 "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter", 28551 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28552 } 28553 ] 28554 }, 28555 "VkWin32SurfaceCreateInfoKHR": { 28556 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [ 28557 { 28558 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307", 28559 "text": " <code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>" 28560 }, 28561 { 28562 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308", 28563 "text": " <code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>" 28564 }, 28565 { 28566 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType", 28567 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>" 28568 }, 28569 { 28570 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext", 28571 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28572 }, 28573 { 28574 "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask", 28575 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28576 } 28577 ] 28578 }, 28579 "vkCreateXcbSurfaceKHR": { 28580 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [ 28581 { 28582 "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter", 28583 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28584 }, 28585 { 28586 "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter", 28587 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkXcbSurfaceCreateInfoKHR\">VkXcbSurfaceCreateInfoKHR</a> structure" 28588 }, 28589 { 28590 "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter", 28591 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28592 }, 28593 { 28594 "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter", 28595 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28596 } 28597 ] 28598 }, 28599 "VkXcbSurfaceCreateInfoKHR": { 28600 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [ 28601 { 28602 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310", 28603 "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>" 28604 }, 28605 { 28606 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311", 28607 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>" 28608 }, 28609 { 28610 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType", 28611 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>" 28612 }, 28613 { 28614 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext", 28615 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28616 }, 28617 { 28618 "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask", 28619 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28620 } 28621 ] 28622 }, 28623 "vkCreateXlibSurfaceKHR": { 28624 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [ 28625 { 28626 "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter", 28627 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28628 }, 28629 { 28630 "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter", 28631 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkXlibSurfaceCreateInfoKHR\">VkXlibSurfaceCreateInfoKHR</a> structure" 28632 }, 28633 { 28634 "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter", 28635 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28636 }, 28637 { 28638 "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter", 28639 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28640 } 28641 ] 28642 }, 28643 "VkXlibSurfaceCreateInfoKHR": { 28644 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [ 28645 { 28646 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313", 28647 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>" 28648 }, 28649 { 28650 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314", 28651 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>" 28652 }, 28653 { 28654 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType", 28655 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>" 28656 }, 28657 { 28658 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext", 28659 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28660 }, 28661 { 28662 "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask", 28663 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28664 } 28665 ] 28666 }, 28667 "vkCreateDirectFBSurfaceEXT": { 28668 "(VK_KHR_surface)+(VK_EXT_directfb_surface)": [ 28669 { 28670 "vuid": "VUID-vkCreateDirectFBSurfaceEXT-instance-parameter", 28671 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28672 }, 28673 { 28674 "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pCreateInfo-parameter", 28675 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDirectFBSurfaceCreateInfoEXT\">VkDirectFBSurfaceCreateInfoEXT</a> structure" 28676 }, 28677 { 28678 "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pAllocator-parameter", 28679 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28680 }, 28681 { 28682 "vuid": "VUID-vkCreateDirectFBSurfaceEXT-pSurface-parameter", 28683 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28684 } 28685 ] 28686 }, 28687 "VkDirectFBSurfaceCreateInfoEXT": { 28688 "(VK_KHR_surface)+(VK_EXT_directfb_surface)": [ 28689 { 28690 "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-dfb-04117", 28691 "text": " <code>dfb</code> <strong class=\"purple\">must</strong> point to a valid DirectFB <code>IDirectFB</code>" 28692 }, 28693 { 28694 "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-surface-04118", 28695 "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid DirectFB <code>IDirectFBSurface</code>" 28696 }, 28697 { 28698 "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-sType-sType", 28699 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT</code>" 28700 }, 28701 { 28702 "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-pNext-pNext", 28703 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28704 }, 28705 { 28706 "vuid": "VUID-VkDirectFBSurfaceCreateInfoEXT-flags-zerobitmask", 28707 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28708 } 28709 ] 28710 }, 28711 "vkCreateImagePipeSurfaceFUCHSIA": { 28712 "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [ 28713 { 28714 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter", 28715 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28716 }, 28717 { 28718 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter", 28719 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkImagePipeSurfaceCreateInfoFUCHSIA\">VkImagePipeSurfaceCreateInfoFUCHSIA</a> structure" 28720 }, 28721 { 28722 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter", 28723 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28724 }, 28725 { 28726 "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter", 28727 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28728 } 28729 ] 28730 }, 28731 "VkImagePipeSurfaceCreateInfoFUCHSIA": { 28732 "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [ 28733 { 28734 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000", 28735 "text": " <code>imagePipeHandle</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code>" 28736 }, 28737 { 28738 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType", 28739 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA</code>" 28740 }, 28741 { 28742 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext", 28743 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28744 }, 28745 { 28746 "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask", 28747 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28748 } 28749 ] 28750 }, 28751 "vkCreateStreamDescriptorSurfaceGGP": { 28752 "(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [ 28753 { 28754 "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-instance-parameter", 28755 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28756 }, 28757 { 28758 "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pCreateInfo-parameter", 28759 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStreamDescriptorSurfaceCreateInfoGGP\">VkStreamDescriptorSurfaceCreateInfoGGP</a> structure" 28760 }, 28761 { 28762 "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pAllocator-parameter", 28763 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28764 }, 28765 { 28766 "vuid": "VUID-vkCreateStreamDescriptorSurfaceGGP-pSurface-parameter", 28767 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28768 } 28769 ] 28770 }, 28771 "VkStreamDescriptorSurfaceCreateInfoGGP": { 28772 "(VK_KHR_surface)+(VK_GGP_stream_descriptor_surface)": [ 28773 { 28774 "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-streamDescriptor-02681", 28775 "text": " <code>streamDescriptor</code> <strong class=\"purple\">must</strong> be a valid <code>GgpStreamDescriptor</code>" 28776 }, 28777 { 28778 "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-sType-sType", 28779 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP</code>" 28780 }, 28781 { 28782 "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-pNext-pNext", 28783 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28784 }, 28785 { 28786 "vuid": "VUID-VkStreamDescriptorSurfaceCreateInfoGGP-flags-zerobitmask", 28787 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28788 } 28789 ] 28790 }, 28791 "vkCreateIOSSurfaceMVK": { 28792 "(VK_KHR_surface)+(VK_MVK_ios_surface)": [ 28793 { 28794 "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter", 28795 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28796 }, 28797 { 28798 "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter", 28799 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkIOSSurfaceCreateInfoMVK\">VkIOSSurfaceCreateInfoMVK</a> structure" 28800 }, 28801 { 28802 "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter", 28803 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28804 }, 28805 { 28806 "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter", 28807 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28808 } 28809 ] 28810 }, 28811 "VkIOSSurfaceCreateInfoMVK": { 28812 "(VK_KHR_surface)+(VK_MVK_ios_surface)": [ 28813 { 28814 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-04143", 28815 "text": " If <code>pView</code> is a <code>CAMetalLayer</code> object, it <strong class=\"purple\">must</strong> be a valid <code>CAMetalLayer</code>." 28816 }, 28817 { 28818 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316", 28819 "text": " If <code>pView</code> is a <code>UIView</code> object, it <strong class=\"purple\">must</strong> be a valid <code>UIView</code>, <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> object of type <code>CAMetalLayer</code>, and <a href=\"#vkCreateIOSSurfaceMVK\">vkCreateIOSSurfaceMVK</a> <strong class=\"purple\">must</strong> be called on the main thread." 28820 }, 28821 { 28822 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType", 28823 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>" 28824 }, 28825 { 28826 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext", 28827 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28828 }, 28829 { 28830 "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask", 28831 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28832 } 28833 ] 28834 }, 28835 "vkCreateMacOSSurfaceMVK": { 28836 "(VK_KHR_surface)+(VK_MVK_macos_surface)": [ 28837 { 28838 "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter", 28839 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28840 }, 28841 { 28842 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter", 28843 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMacOSSurfaceCreateInfoMVK\">VkMacOSSurfaceCreateInfoMVK</a> structure" 28844 }, 28845 { 28846 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter", 28847 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28848 }, 28849 { 28850 "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter", 28851 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28852 } 28853 ] 28854 }, 28855 "VkMacOSSurfaceCreateInfoMVK": { 28856 "(VK_KHR_surface)+(VK_MVK_macos_surface)": [ 28857 { 28858 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-04144", 28859 "text": " If <code>pView</code> is a <code>CAMetalLayer</code> object, it <strong class=\"purple\">must</strong> be a valid <code>CAMetalLayer</code>." 28860 }, 28861 { 28862 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317", 28863 "text": " If <code>pView</code> is an <code>NSView</code> object, it <strong class=\"purple\">must</strong> be a valid <code>NSView</code>, <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> object of type <code>CAMetalLayer</code>, and <a href=\"#vkCreateMacOSSurfaceMVK\">vkCreateMacOSSurfaceMVK</a> <strong class=\"purple\">must</strong> be called on the main thread." 28864 }, 28865 { 28866 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType", 28867 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>" 28868 }, 28869 { 28870 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext", 28871 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28872 }, 28873 { 28874 "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask", 28875 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28876 } 28877 ] 28878 }, 28879 "vkCreateViSurfaceNN": { 28880 "(VK_KHR_surface)+(VK_NN_vi_surface)": [ 28881 { 28882 "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter", 28883 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28884 }, 28885 { 28886 "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter", 28887 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkViSurfaceCreateInfoNN\">VkViSurfaceCreateInfoNN</a> structure" 28888 }, 28889 { 28890 "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter", 28891 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28892 }, 28893 { 28894 "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter", 28895 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28896 } 28897 ] 28898 }, 28899 "VkViSurfaceCreateInfoNN": { 28900 "(VK_KHR_surface)+(VK_NN_vi_surface)": [ 28901 { 28902 "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318", 28903 "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>" 28904 }, 28905 { 28906 "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType", 28907 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>" 28908 }, 28909 { 28910 "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext", 28911 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28912 }, 28913 { 28914 "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask", 28915 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28916 } 28917 ] 28918 }, 28919 "vkCreateMetalSurfaceEXT": { 28920 "(VK_KHR_surface)+(VK_EXT_metal_surface)": [ 28921 { 28922 "vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter", 28923 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28924 }, 28925 { 28926 "vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter", 28927 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkMetalSurfaceCreateInfoEXT\">VkMetalSurfaceCreateInfoEXT</a> structure" 28928 }, 28929 { 28930 "vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter", 28931 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28932 }, 28933 { 28934 "vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter", 28935 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28936 } 28937 ] 28938 }, 28939 "VkMetalSurfaceCreateInfoEXT": { 28940 "(VK_KHR_surface)+(VK_EXT_metal_surface)": [ 28941 { 28942 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType", 28943 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT</code>" 28944 }, 28945 { 28946 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext", 28947 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28948 }, 28949 { 28950 "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask", 28951 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 28952 } 28953 ] 28954 }, 28955 "vkDestroySurfaceKHR": { 28956 "(VK_KHR_surface)": [ 28957 { 28958 "vuid": "VUID-vkDestroySurfaceKHR-surface-01266", 28959 "text": " All <code>VkSwapchainKHR</code> objects created for <code>surface</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>surface</code>" 28960 }, 28961 { 28962 "vuid": "VUID-vkDestroySurfaceKHR-surface-01267", 28963 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 28964 }, 28965 { 28966 "vuid": "VUID-vkDestroySurfaceKHR-surface-01268", 28967 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 28968 }, 28969 { 28970 "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter", 28971 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 28972 }, 28973 { 28974 "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter", 28975 "text": " If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 28976 }, 28977 { 28978 "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter", 28979 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 28980 }, 28981 { 28982 "vuid": "VUID-vkDestroySurfaceKHR-surface-parent", 28983 "text": " If <code>surface</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>" 28984 } 28985 ] 28986 }, 28987 "vkGetPhysicalDeviceDisplayPropertiesKHR": { 28988 "(VK_KHR_surface)+(VK_KHR_display)": [ 28989 { 28990 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter", 28991 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 28992 }, 28993 { 28994 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter", 28995 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 28996 }, 28997 { 28998 "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter", 28999 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayPropertiesKHR\">VkDisplayPropertiesKHR</a> structures" 29000 } 29001 ] 29002 }, 29003 "vkGetPhysicalDeviceDisplayProperties2KHR": { 29004 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29005 { 29006 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter", 29007 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29008 }, 29009 { 29010 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter", 29011 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29012 }, 29013 { 29014 "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter", 29015 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayProperties2KHR\">VkDisplayProperties2KHR</a> structures" 29016 } 29017 ] 29018 }, 29019 "VkDisplayProperties2KHR": { 29020 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29021 { 29022 "vuid": "VUID-VkDisplayProperties2KHR-sType-sType", 29023 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR</code>" 29024 }, 29025 { 29026 "vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext", 29027 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29028 } 29029 ] 29030 }, 29031 "vkAcquireXlibDisplayEXT": { 29032 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [ 29033 { 29034 "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter", 29035 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29036 }, 29037 { 29038 "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter", 29039 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value" 29040 }, 29041 { 29042 "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter", 29043 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle" 29044 }, 29045 { 29046 "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parent", 29047 "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>" 29048 } 29049 ] 29050 }, 29051 "vkGetRandROutputDisplayEXT": { 29052 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [ 29053 { 29054 "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter", 29055 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29056 }, 29057 { 29058 "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter", 29059 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value" 29060 }, 29061 { 29062 "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter", 29063 "text": " <code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle" 29064 } 29065 ] 29066 }, 29067 "vkReleaseDisplayEXT": { 29068 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [ 29069 { 29070 "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter", 29071 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29072 }, 29073 { 29074 "vuid": "VUID-vkReleaseDisplayEXT-display-parameter", 29075 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle" 29076 }, 29077 { 29078 "vuid": "VUID-vkReleaseDisplayEXT-display-parent", 29079 "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>" 29080 } 29081 ] 29082 }, 29083 "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": { 29084 "(VK_KHR_surface)+(VK_KHR_display)": [ 29085 { 29086 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter", 29087 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29088 }, 29089 { 29090 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter", 29091 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29092 }, 29093 { 29094 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter", 29095 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayPlanePropertiesKHR\">VkDisplayPlanePropertiesKHR</a> structures" 29096 } 29097 ] 29098 }, 29099 "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": { 29100 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29101 { 29102 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter", 29103 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29104 }, 29105 { 29106 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter", 29107 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29108 }, 29109 { 29110 "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter", 29111 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayPlaneProperties2KHR\">VkDisplayPlaneProperties2KHR</a> structures" 29112 } 29113 ] 29114 }, 29115 "VkDisplayPlaneProperties2KHR": { 29116 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29117 { 29118 "vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType", 29119 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR</code>" 29120 }, 29121 { 29122 "vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext", 29123 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29124 } 29125 ] 29126 }, 29127 "vkGetDisplayPlaneSupportedDisplaysKHR": { 29128 "(VK_KHR_surface)+(VK_KHR_display)": [ 29129 { 29130 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249", 29131 "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>" 29132 }, 29133 { 29134 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter", 29135 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29136 }, 29137 { 29138 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter", 29139 "text": " <code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29140 }, 29141 { 29142 "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter", 29143 "text": " If the value referenced by <code>pDisplayCount</code> is not <code>0</code>, and <code>pDisplays</code> is not <code>NULL</code>, <code>pDisplays</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDisplayCount</code> <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handles" 29144 } 29145 ] 29146 }, 29147 "vkGetDisplayModePropertiesKHR": { 29148 "(VK_KHR_surface)+(VK_KHR_display)": [ 29149 { 29150 "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter", 29151 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29152 }, 29153 { 29154 "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter", 29155 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle" 29156 }, 29157 { 29158 "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter", 29159 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29160 }, 29161 { 29162 "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter", 29163 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayModePropertiesKHR\">VkDisplayModePropertiesKHR</a> structures" 29164 }, 29165 { 29166 "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parent", 29167 "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>" 29168 } 29169 ] 29170 }, 29171 "vkGetDisplayModeProperties2KHR": { 29172 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29173 { 29174 "vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter", 29175 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29176 }, 29177 { 29178 "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter", 29179 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle" 29180 }, 29181 { 29182 "vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter", 29183 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29184 }, 29185 { 29186 "vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter", 29187 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkDisplayModeProperties2KHR\">VkDisplayModeProperties2KHR</a> structures" 29188 }, 29189 { 29190 "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parent", 29191 "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>" 29192 } 29193 ] 29194 }, 29195 "VkDisplayModeProperties2KHR": { 29196 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29197 { 29198 "vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType", 29199 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR</code>" 29200 }, 29201 { 29202 "vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext", 29203 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29204 } 29205 ] 29206 }, 29207 "VkDisplayModeParametersKHR": { 29208 "(VK_KHR_surface)+(VK_KHR_display)": [ 29209 { 29210 "vuid": "VUID-VkDisplayModeParametersKHR-width-01990", 29211 "text": " The <code>width</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 29212 }, 29213 { 29214 "vuid": "VUID-VkDisplayModeParametersKHR-height-01991", 29215 "text": " The <code>height</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 29216 }, 29217 { 29218 "vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992", 29219 "text": " <code>refreshRate</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 29220 } 29221 ] 29222 }, 29223 "vkCreateDisplayModeKHR": { 29224 "(VK_KHR_surface)+(VK_KHR_display)": [ 29225 { 29226 "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter", 29227 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29228 }, 29229 { 29230 "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter", 29231 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle" 29232 }, 29233 { 29234 "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter", 29235 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayModeCreateInfoKHR\">VkDisplayModeCreateInfoKHR</a> structure" 29236 }, 29237 { 29238 "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter", 29239 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 29240 }, 29241 { 29242 "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter", 29243 "text": " <code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle" 29244 }, 29245 { 29246 "vuid": "VUID-vkCreateDisplayModeKHR-display-parent", 29247 "text": " <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>physicalDevice</code>" 29248 } 29249 ] 29250 }, 29251 "VkDisplayModeCreateInfoKHR": { 29252 "(VK_KHR_surface)+(VK_KHR_display)": [ 29253 { 29254 "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType", 29255 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>" 29256 }, 29257 { 29258 "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext", 29259 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29260 }, 29261 { 29262 "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask", 29263 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 29264 }, 29265 { 29266 "vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter", 29267 "text": " <code>parameters</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeParametersKHR\">VkDisplayModeParametersKHR</a> structure" 29268 } 29269 ] 29270 }, 29271 "vkGetDisplayPlaneCapabilitiesKHR": { 29272 "(VK_KHR_surface)+(VK_KHR_display)": [ 29273 { 29274 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter", 29275 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29276 }, 29277 { 29278 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter", 29279 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle" 29280 }, 29281 { 29282 "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter", 29283 "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayPlaneCapabilitiesKHR\">VkDisplayPlaneCapabilitiesKHR</a> structure" 29284 } 29285 ] 29286 }, 29287 "vkGetDisplayPlaneCapabilities2KHR": { 29288 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29289 { 29290 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter", 29291 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29292 }, 29293 { 29294 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter", 29295 "text": " <code>pDisplayPlaneInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayPlaneInfo2KHR\">VkDisplayPlaneInfo2KHR</a> structure" 29296 }, 29297 { 29298 "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter", 29299 "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDisplayPlaneCapabilities2KHR\">VkDisplayPlaneCapabilities2KHR</a> structure" 29300 } 29301 ] 29302 }, 29303 "VkDisplayPlaneInfo2KHR": { 29304 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29305 { 29306 "vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType", 29307 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR</code>" 29308 }, 29309 { 29310 "vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext", 29311 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29312 }, 29313 { 29314 "vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter", 29315 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle" 29316 } 29317 ] 29318 }, 29319 "VkDisplayPlaneCapabilities2KHR": { 29320 "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [ 29321 { 29322 "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType", 29323 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR</code>" 29324 }, 29325 { 29326 "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext", 29327 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29328 } 29329 ] 29330 }, 29331 "vkDisplayPowerControlEXT": { 29332 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [ 29333 { 29334 "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter", 29335 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 29336 }, 29337 { 29338 "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter", 29339 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayKHR\">VkDisplayKHR</a> handle" 29340 }, 29341 { 29342 "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter", 29343 "text": " <code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplayPowerInfoEXT\">VkDisplayPowerInfoEXT</a> structure" 29344 }, 29345 { 29346 "vuid": "VUID-vkDisplayPowerControlEXT-commonparent", 29347 "text": " Both of <code>device</code>, and <code>display</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a>" 29348 } 29349 ] 29350 }, 29351 "VkDisplayPowerInfoEXT": { 29352 "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [ 29353 { 29354 "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType", 29355 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>" 29356 }, 29357 { 29358 "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext", 29359 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29360 }, 29361 { 29362 "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter", 29363 "text": " <code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value" 29364 } 29365 ] 29366 }, 29367 "vkCreateDisplayPlaneSurfaceKHR": { 29368 "(VK_KHR_surface)+(VK_KHR_display)": [ 29369 { 29370 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter", 29371 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 29372 }, 29373 { 29374 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter", 29375 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDisplaySurfaceCreateInfoKHR\">VkDisplaySurfaceCreateInfoKHR</a> structure" 29376 }, 29377 { 29378 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter", 29379 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 29380 }, 29381 { 29382 "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter", 29383 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29384 } 29385 ] 29386 }, 29387 "VkDisplaySurfaceCreateInfoKHR": { 29388 "(VK_KHR_surface)+(VK_KHR_display)": [ 29389 { 29390 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252", 29391 "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>" 29392 }, 29393 { 29394 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253", 29395 "text": " If the <code>planeReorderPossible</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display corresponding to <code>displayMode</code> is <code>VK_TRUE</code> then <code>planeStackIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>; otherwise <code>planeStackIndex</code> <strong class=\"purple\">must</strong> equal the <code>currentStackIndex</code> member of <code>VkDisplayPlanePropertiesKHR</code> returned by <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code> for the display plane corresponding to <code>displayMode</code>" 29396 }, 29397 { 29398 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254", 29399 "text": " If <code>alphaMode</code> is <code>VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR</code> then <code>globalAlpha</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive" 29400 }, 29401 { 29402 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255", 29403 "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be <code>0</code> or one of the bits present in the <code>supportedAlpha</code> member of <code>VkDisplayPlaneCapabilitiesKHR</code> returned by <code>vkGetDisplayPlaneCapabilitiesKHR</code> for the display plane corresponding to <code>displayMode</code>" 29404 }, 29405 { 29406 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256", 29407 "text": " The <code>width</code> and <code>height</code> members of <code>imageExtent</code> <strong class=\"purple\">must</strong> be less than the <code>maxImageDimensions2D</code> member of <code>VkPhysicalDeviceLimits</code>" 29408 }, 29409 { 29410 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType", 29411 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>" 29412 }, 29413 { 29414 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext", 29415 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29416 }, 29417 { 29418 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask", 29419 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 29420 }, 29421 { 29422 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter", 29423 "text": " <code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayModeKHR\">VkDisplayModeKHR</a> handle" 29424 }, 29425 { 29426 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter", 29427 "text": " <code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value" 29428 }, 29429 { 29430 "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter", 29431 "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value" 29432 } 29433 ] 29434 }, 29435 "vkCreateHeadlessSurfaceEXT": { 29436 "(VK_KHR_surface)+(VK_EXT_headless_surface)": [ 29437 { 29438 "vuid": "VUID-vkCreateHeadlessSurfaceEXT-instance-parameter", 29439 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 29440 }, 29441 { 29442 "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pCreateInfo-parameter", 29443 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkHeadlessSurfaceCreateInfoEXT\">VkHeadlessSurfaceCreateInfoEXT</a> structure" 29444 }, 29445 { 29446 "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pAllocator-parameter", 29447 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 29448 }, 29449 { 29450 "vuid": "VUID-vkCreateHeadlessSurfaceEXT-pSurface-parameter", 29451 "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29452 } 29453 ] 29454 }, 29455 "VkHeadlessSurfaceCreateInfoEXT": { 29456 "(VK_KHR_surface)+(VK_EXT_headless_surface)": [ 29457 { 29458 "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-sType-sType", 29459 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT</code>" 29460 }, 29461 { 29462 "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-pNext-pNext", 29463 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29464 }, 29465 { 29466 "vuid": "VUID-VkHeadlessSurfaceCreateInfoEXT-flags-zerobitmask", 29467 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 29468 } 29469 ] 29470 }, 29471 "vkGetPhysicalDeviceSurfaceSupportKHR": { 29472 "(VK_KHR_surface)": [ 29473 { 29474 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269", 29475 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 29476 }, 29477 { 29478 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter", 29479 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29480 }, 29481 { 29482 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter", 29483 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29484 }, 29485 { 29486 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter", 29487 "text": " <code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBool32</code> value" 29488 }, 29489 { 29490 "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent", 29491 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29492 } 29493 ] 29494 }, 29495 "vkGetPhysicalDeviceWaylandPresentationSupportKHR": { 29496 "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [ 29497 { 29498 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306", 29499 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 29500 }, 29501 { 29502 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter", 29503 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29504 }, 29505 { 29506 "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter", 29507 "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value" 29508 } 29509 ] 29510 }, 29511 "vkGetPhysicalDeviceWin32PresentationSupportKHR": { 29512 "(VK_KHR_surface)+(VK_KHR_win32_surface)": [ 29513 { 29514 "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309", 29515 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 29516 }, 29517 { 29518 "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter", 29519 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29520 } 29521 ] 29522 }, 29523 "vkGetPhysicalDeviceXcbPresentationSupportKHR": { 29524 "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [ 29525 { 29526 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312", 29527 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 29528 }, 29529 { 29530 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter", 29531 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29532 }, 29533 { 29534 "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter", 29535 "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>xcb_connection_t</code> value" 29536 } 29537 ] 29538 }, 29539 "vkGetPhysicalDeviceXlibPresentationSupportKHR": { 29540 "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [ 29541 { 29542 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315", 29543 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 29544 }, 29545 { 29546 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter", 29547 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29548 }, 29549 { 29550 "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter", 29551 "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value" 29552 } 29553 ] 29554 }, 29555 "vkGetPhysicalDeviceDirectFBPresentationSupportEXT": { 29556 "(VK_KHR_surface)+(VK_EXT_directfb_surface)": [ 29557 { 29558 "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-queueFamilyIndex-04119", 29559 "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>" 29560 }, 29561 { 29562 "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-physicalDevice-parameter", 29563 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29564 }, 29565 { 29566 "vuid": "VUID-vkGetPhysicalDeviceDirectFBPresentationSupportEXT-dfb-parameter", 29567 "text": " <code>dfb</code> <strong class=\"purple\">must</strong> be a valid pointer to an <code>IDirectFB</code> value" 29568 } 29569 ] 29570 }, 29571 "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": { 29572 "(VK_KHR_surface)": [ 29573 { 29574 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter", 29575 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29576 }, 29577 { 29578 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter", 29579 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29580 }, 29581 { 29582 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter", 29583 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure" 29584 }, 29585 { 29586 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent", 29587 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29588 } 29589 ] 29590 }, 29591 "vkGetPhysicalDeviceSurfaceCapabilities2KHR": { 29592 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive+VK_KHR_win32_surface)": [ 29593 { 29594 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pNext-02671", 29595 "text": " If a <a href=\"#VkSurfaceCapabilitiesFullScreenExclusiveEXT\">VkSurfaceCapabilitiesFullScreenExclusiveEXT</a> structure is included in the <code>pNext</code> chain of <code>pSurfaceCapabilities</code>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain of <code>pSurfaceInfo</code>" 29596 } 29597 ], 29598 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 29599 { 29600 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter", 29601 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29602 }, 29603 { 29604 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter", 29605 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure" 29606 }, 29607 { 29608 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter", 29609 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilities2KHR\">VkSurfaceCapabilities2KHR</a> structure" 29610 } 29611 ] 29612 }, 29613 "VkPhysicalDeviceSurfaceInfo2KHR": { 29614 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_win32_surface+VK_EXT_full_screen_exclusive)": [ 29615 { 29616 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-02672", 29617 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure with its <code>fullScreenExclusive</code> member set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>, and <code>surface</code> was created using <a href=\"#vkCreateWin32SurfaceKHR\">vkCreateWin32SurfaceKHR</a>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain" 29618 } 29619 ], 29620 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 29621 { 29622 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType", 29623 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>" 29624 }, 29625 { 29626 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext", 29627 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> or <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a>" 29628 }, 29629 { 29630 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-unique", 29631 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 29632 }, 29633 { 29634 "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter", 29635 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29636 } 29637 ] 29638 }, 29639 "VkSurfaceFullScreenExclusiveInfoEXT": { 29640 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [ 29641 { 29642 "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-sType-sType", 29643 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT</code>" 29644 }, 29645 { 29646 "vuid": "VUID-VkSurfaceFullScreenExclusiveInfoEXT-fullScreenExclusive-parameter", 29647 "text": " <code>fullScreenExclusive</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFullScreenExclusiveEXT\">VkFullScreenExclusiveEXT</a> value" 29648 } 29649 ] 29650 }, 29651 "VkSurfaceFullScreenExclusiveWin32InfoEXT": { 29652 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)+(VK_KHR_win32_surface)": [ 29653 { 29654 "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-hmonitor-02673", 29655 "text": " <code>hmonitor</code> <strong class=\"purple\">must</strong> be a valid <code>HMONITOR</code>" 29656 }, 29657 { 29658 "vuid": "VUID-VkSurfaceFullScreenExclusiveWin32InfoEXT-sType-sType", 29659 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT</code>" 29660 } 29661 ] 29662 }, 29663 "VkSurfaceCapabilities2KHR": { 29664 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 29665 { 29666 "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType", 29667 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>" 29668 }, 29669 { 29670 "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext", 29671 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>, <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a>, <a href=\"#VkSurfaceCapabilitiesFullScreenExclusiveEXT\">VkSurfaceCapabilitiesFullScreenExclusiveEXT</a>, or <a href=\"#VkSurfaceProtectedCapabilitiesKHR\">VkSurfaceProtectedCapabilitiesKHR</a>" 29672 }, 29673 { 29674 "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-unique", 29675 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 29676 } 29677 ] 29678 }, 29679 "VkSurfaceProtectedCapabilitiesKHR": { 29680 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_surface_protected_capabilities)": [ 29681 { 29682 "vuid": "VUID-VkSurfaceProtectedCapabilitiesKHR-sType-sType", 29683 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR</code>" 29684 } 29685 ] 29686 }, 29687 "VkSharedPresentSurfaceCapabilitiesKHR": { 29688 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [ 29689 { 29690 "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType", 29691 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>" 29692 } 29693 ] 29694 }, 29695 "VkDisplayNativeHdrSurfaceCapabilitiesAMD": { 29696 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_AMD_display_native_hdr)": [ 29697 { 29698 "vuid": "VUID-VkDisplayNativeHdrSurfaceCapabilitiesAMD-sType-sType", 29699 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD</code>" 29700 } 29701 ] 29702 }, 29703 "VkSurfaceCapabilitiesFullScreenExclusiveEXT": { 29704 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_EXT_full_screen_exclusive)": [ 29705 { 29706 "vuid": "VUID-VkSurfaceCapabilitiesFullScreenExclusiveEXT-sType-sType", 29707 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT</code>" 29708 } 29709 ] 29710 }, 29711 "vkGetPhysicalDeviceSurfaceCapabilities2EXT": { 29712 "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [ 29713 { 29714 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter", 29715 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29716 }, 29717 { 29718 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter", 29719 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29720 }, 29721 { 29722 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter", 29723 "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSurfaceCapabilities2EXT\">VkSurfaceCapabilities2EXT</a> structure" 29724 }, 29725 { 29726 "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent", 29727 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29728 } 29729 ] 29730 }, 29731 "VkSurfaceCapabilities2EXT": { 29732 "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [ 29733 { 29734 "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246", 29735 "text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>" 29736 }, 29737 { 29738 "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType", 29739 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>" 29740 }, 29741 { 29742 "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext", 29743 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29744 } 29745 ] 29746 }, 29747 "vkGetPhysicalDeviceSurfaceFormatsKHR": { 29748 "(VK_KHR_surface)": [ 29749 { 29750 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-02739", 29751 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism" 29752 }, 29753 { 29754 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter", 29755 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29756 }, 29757 { 29758 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter", 29759 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29760 }, 29761 { 29762 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter", 29763 "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29764 }, 29765 { 29766 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter", 29767 "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <a href=\"#VkSurfaceFormatKHR\">VkSurfaceFormatKHR</a> structures" 29768 }, 29769 { 29770 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent", 29771 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29772 } 29773 ] 29774 }, 29775 "vkGetPhysicalDeviceSurfaceFormats2KHR": { 29776 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 29777 { 29778 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-02740", 29779 "text": " <code>pSurfaceInfo->surface</code> <strong class=\"purple\">must</strong> be supported by <code>physicalDevice</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a> or an equivalent platform-specific mechanism" 29780 }, 29781 { 29782 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter", 29783 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29784 }, 29785 { 29786 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter", 29787 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure" 29788 }, 29789 { 29790 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter", 29791 "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29792 }, 29793 { 29794 "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter", 29795 "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <a href=\"#VkSurfaceFormat2KHR\">VkSurfaceFormat2KHR</a> structures" 29796 } 29797 ] 29798 }, 29799 "VkSurfaceFormat2KHR": { 29800 "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [ 29801 { 29802 "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType", 29803 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>" 29804 }, 29805 { 29806 "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext", 29807 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29808 } 29809 ] 29810 }, 29811 "vkGetPhysicalDeviceSurfacePresentModesKHR": { 29812 "(VK_KHR_surface)": [ 29813 { 29814 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter", 29815 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29816 }, 29817 { 29818 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter", 29819 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29820 }, 29821 { 29822 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter", 29823 "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29824 }, 29825 { 29826 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter", 29827 "text": " If the value referenced by <code>pPresentModeCount</code> is not <code>0</code>, and <code>pPresentModes</code> is not <code>NULL</code>, <code>pPresentModes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentModeCount</code> <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values" 29828 }, 29829 { 29830 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent", 29831 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29832 } 29833 ] 29834 }, 29835 "vkGetPhysicalDeviceSurfacePresentModes2EXT": { 29836 "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [ 29837 { 29838 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-physicalDevice-parameter", 29839 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29840 }, 29841 { 29842 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pSurfaceInfo-parameter", 29843 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure" 29844 }, 29845 { 29846 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModeCount-parameter", 29847 "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29848 }, 29849 { 29850 "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModes2EXT-pPresentModes-parameter", 29851 "text": " If the value referenced by <code>pPresentModeCount</code> is not <code>0</code>, and <code>pPresentModes</code> is not <code>NULL</code>, <code>pPresentModes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentModeCount</code> <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values" 29852 } 29853 ] 29854 }, 29855 "vkAcquireFullScreenExclusiveModeEXT": { 29856 "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [ 29857 { 29858 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02674", 29859 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state" 29860 }, 29861 { 29862 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02675", 29863 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a swapchain created with a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure, with <code>fullScreenExclusive</code> set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>" 29864 }, 29865 { 29866 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-02676", 29867 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not currently have exclusive full-screen access" 29868 }, 29869 { 29870 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-device-parameter", 29871 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 29872 }, 29873 { 29874 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-swapchain-parameter", 29875 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 29876 }, 29877 { 29878 "vuid": "VUID-vkAcquireFullScreenExclusiveModeEXT-commonparent", 29879 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29880 } 29881 ] 29882 }, 29883 "vkReleaseFullScreenExclusiveModeEXT": { 29884 "(VK_KHR_surface)+(VK_EXT_full_screen_exclusive)": [ 29885 { 29886 "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02677", 29887 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state" 29888 }, 29889 { 29890 "vuid": "VUID-vkReleaseFullScreenExclusiveModeEXT-swapchain-02678", 29891 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a swapchain created with a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure, with <code>fullScreenExclusive</code> set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>" 29892 } 29893 ] 29894 }, 29895 "vkGetDeviceGroupPresentCapabilitiesKHR": { 29896 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 29897 { 29898 "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter", 29899 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 29900 }, 29901 { 29902 "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter", 29903 "text": " <code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a> structure" 29904 } 29905 ] 29906 }, 29907 "VkDeviceGroupPresentCapabilitiesKHR": { 29908 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 29909 { 29910 "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType", 29911 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>" 29912 }, 29913 { 29914 "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext", 29915 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 29916 } 29917 ] 29918 }, 29919 "vkGetDeviceGroupSurfacePresentModesKHR": { 29920 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 29921 { 29922 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter", 29923 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 29924 }, 29925 { 29926 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter", 29927 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29928 }, 29929 { 29930 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter", 29931 "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value" 29932 }, 29933 { 29934 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent", 29935 "text": " Both of <code>device</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29936 } 29937 ] 29938 }, 29939 "vkGetDeviceGroupSurfacePresentModes2EXT": { 29940 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_EXT_full_screen_exclusive)": [ 29941 { 29942 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-device-parameter", 29943 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 29944 }, 29945 { 29946 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pSurfaceInfo-parameter", 29947 "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceSurfaceInfo2KHR\">VkPhysicalDeviceSurfaceInfo2KHR</a> structure" 29948 }, 29949 { 29950 "vuid": "VUID-vkGetDeviceGroupSurfacePresentModes2EXT-pModes-parameter", 29951 "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value" 29952 } 29953 ] 29954 }, 29955 "vkGetPhysicalDevicePresentRectanglesKHR": { 29956 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 29957 { 29958 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter", 29959 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 29960 }, 29961 { 29962 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter", 29963 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 29964 }, 29965 { 29966 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter", 29967 "text": " <code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 29968 }, 29969 { 29970 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter", 29971 "text": " If the value referenced by <code>pRectCount</code> is not <code>0</code>, and <code>pRects</code> is not <code>NULL</code>, <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pRectCount</code> <a href=\"#VkRect2D\">VkRect2D</a> structures" 29972 }, 29973 { 29974 "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent", 29975 "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29976 } 29977 ] 29978 }, 29979 "vkGetRefreshCycleDurationGOOGLE": { 29980 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [ 29981 { 29982 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter", 29983 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 29984 }, 29985 { 29986 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter", 29987 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 29988 }, 29989 { 29990 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter", 29991 "text": " <code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkRefreshCycleDurationGOOGLE\">VkRefreshCycleDurationGOOGLE</a> structure" 29992 }, 29993 { 29994 "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent", 29995 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 29996 } 29997 ] 29998 }, 29999 "vkGetPastPresentationTimingGOOGLE": { 30000 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [ 30001 { 30002 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter", 30003 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30004 }, 30005 { 30006 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter", 30007 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30008 }, 30009 { 30010 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter", 30011 "text": " <code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 30012 }, 30013 { 30014 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter", 30015 "text": " If the value referenced by <code>pPresentationTimingCount</code> is not <code>0</code>, and <code>pPresentationTimings</code> is not <code>NULL</code>, <code>pPresentationTimings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentationTimingCount</code> <a href=\"#VkPastPresentationTimingGOOGLE\">VkPastPresentationTimingGOOGLE</a> structures" 30016 }, 30017 { 30018 "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent", 30019 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30020 } 30021 ] 30022 }, 30023 "vkGetSwapchainStatusKHR": { 30024 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [ 30025 { 30026 "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter", 30027 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30028 }, 30029 { 30030 "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter", 30031 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30032 }, 30033 { 30034 "vuid": "VUID-vkGetSwapchainStatusKHR-commonparent", 30035 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30036 } 30037 ] 30038 }, 30039 "vkCreateSwapchainKHR": { 30040 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 30041 { 30042 "vuid": "VUID-vkCreateSwapchainKHR-device-parameter", 30043 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30044 }, 30045 { 30046 "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter", 30047 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure" 30048 }, 30049 { 30050 "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter", 30051 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 30052 }, 30053 { 30054 "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter", 30055 "text": " <code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30056 } 30057 ] 30058 }, 30059 "VkSwapchainCreateInfoKHR": { 30060 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 30061 { 30062 "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270", 30063 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a surface that is supported by the device as determined using <a href=\"#vkGetPhysicalDeviceSurfaceSupportKHR\">vkGetPhysicalDeviceSurfaceSupportKHR</a>" 30064 }, 30065 { 30066 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272", 30067 "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value returned in the <code>maxImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface if the returned <code>maxImageCount</code> is not zero" 30068 }, 30069 { 30070 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273", 30071 "text": " <code>imageFormat</code> and <code>imageColorSpace</code> <strong class=\"purple\">must</strong> match the <code>format</code> and <code>colorSpace</code> members, respectively, of one of the <code>VkSurfaceFormatKHR</code> structures returned by <code>vkGetPhysicalDeviceSurfaceFormatsKHR</code> for the surface" 30072 }, 30073 { 30074 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274", 30075 "text": " <code>imageExtent</code> <strong class=\"purple\">must</strong> be between <code>minImageExtent</code> and <code>maxImageExtent</code>, inclusive, where <code>minImageExtent</code> and <code>maxImageExtent</code> are members of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 30076 }, 30077 { 30078 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689", 30079 "text": " <code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero" 30080 }, 30081 { 30082 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275", 30083 "text": " <code>imageArrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to the <code>maxImageArrayLayers</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 30084 }, 30085 { 30086 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277", 30087 "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values" 30088 }, 30089 { 30090 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278", 30091 "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 30092 }, 30093 { 30094 "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279", 30095 "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedTransforms</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 30096 }, 30097 { 30098 "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280", 30099 "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedCompositeAlpha</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 30100 }, 30101 { 30102 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281", 30103 "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values returned by <code>vkGetPhysicalDeviceSurfacePresentModesKHR</code> for the surface" 30104 }, 30105 { 30106 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933", 30107 "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a non-retired swapchain associated with native window referred to by <code>surface</code>" 30108 }, 30109 { 30110 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778", 30111 "text": " The <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain <strong class=\"purple\">must</strong> be supported as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties\">vkGetPhysicalDeviceImageFormatProperties</a>" 30112 }, 30113 { 30114 "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType", 30115 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>" 30116 }, 30117 { 30118 "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext", 30119 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>, <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a>, <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a>, <a href=\"#VkSwapchainCounterCreateInfoEXT\">VkSwapchainCounterCreateInfoEXT</a>, or <a href=\"#VkSwapchainDisplayNativeHdrCreateInfoAMD\">VkSwapchainDisplayNativeHdrCreateInfoAMD</a>" 30120 }, 30121 { 30122 "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique", 30123 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 30124 }, 30125 { 30126 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter", 30127 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values" 30128 }, 30129 { 30130 "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter", 30131 "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceKHR\">VkSurfaceKHR</a> handle" 30132 }, 30133 { 30134 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter", 30135 "text": " <code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 30136 }, 30137 { 30138 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter", 30139 "text": " <code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value" 30140 }, 30141 { 30142 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter", 30143 "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 30144 }, 30145 { 30146 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask", 30147 "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 30148 }, 30149 { 30150 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter", 30151 "text": " <code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value" 30152 }, 30153 { 30154 "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter", 30155 "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value" 30156 }, 30157 { 30158 "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter", 30159 "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value" 30160 }, 30161 { 30162 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter", 30163 "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value" 30164 }, 30165 { 30166 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter", 30167 "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30168 }, 30169 { 30170 "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent", 30171 "text": " If <code>oldSwapchain</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>surface</code>" 30172 }, 30173 { 30174 "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent", 30175 "text": " Both of <code>oldSwapchain</code>, and <code>surface</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30176 } 30177 ], 30178 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [ 30179 { 30180 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271", 30181 "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for the surface" 30182 }, 30183 { 30184 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276", 30185 "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface" 30186 } 30187 ], 30188 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [ 30189 { 30190 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-02839", 30191 "text": " If <code>presentMode</code> is not <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> nor <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, then <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for the surface" 30192 }, 30193 { 30194 "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383", 30195 "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be <code>1</code> if <code>presentMode</code> is either <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>" 30196 }, 30197 { 30198 "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427", 30199 "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_IMMEDIATE_KHR</code>, <code>VK_PRESENT_MODE_MAILBOX_KHR</code>, <code>VK_PRESENT_MODE_FIFO_KHR</code> or <code>VK_PRESENT_MODE_FIFO_RELAXED_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for <code>surface</code>" 30200 }, 30201 { 30202 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384", 30203 "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>sharedPresentSupportedUsageFlags</code> member of the <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> for <code>surface</code>" 30204 } 30205 ], 30206 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 30207 { 30208 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393", 30209 "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 30210 } 30211 ], 30212 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 30213 { 30214 "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428", 30215 "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 30216 } 30217 ], 30218 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 30219 { 30220 "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429", 30221 "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR</code>" 30222 } 30223 ], 30224 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [ 30225 { 30226 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168", 30227 "text": " If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure with a <code>viewFormatCount</code> greater than zero and <code>pViewFormats</code> <strong class=\"purple\">must</strong> have an element equal to <code>imageFormat</code>" 30228 }, 30229 { 30230 "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-04099", 30231 "text": " If a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure was included in the <code>pNext</code> chain and <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> is not zero then all of the formats in <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>pViewFormats</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> as described in the <a href=\"#formats-compatibility\">compatibility table</a>" 30232 }, 30233 { 30234 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-04100", 30235 "text": " If <code>flags</code> does not contain <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> and the <code>pNext</code> chain include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure then <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>::<code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>" 30236 } 30237 ], 30238 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_surface_protected_capabilities)": [ 30239 { 30240 "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03187", 30241 "text": " If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR</code>, then <code>VkSurfaceProtectedCapabilitiesKHR</code>::<code>supportsProtected</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code> in the <a href=\"#VkSurfaceProtectedCapabilitiesKHR\">VkSurfaceProtectedCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> for <code>surface</code>" 30242 } 30243 ], 30244 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_full_screen_exclusive+VK_KHR_win32_surface)": [ 30245 { 30246 "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-02679", 30247 "text": " If the <code>pNext</code> chain includes a <a href=\"#VkSurfaceFullScreenExclusiveInfoEXT\">VkSurfaceFullScreenExclusiveInfoEXT</a> structure with its <code>fullScreenExclusive</code> member set to <code>VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT</code>, and <code>surface</code> was created using <a href=\"#vkCreateWin32SurfaceKHR\">vkCreateWin32SurfaceKHR</a>, a <a href=\"#VkSurfaceFullScreenExclusiveWin32InfoEXT\">VkSurfaceFullScreenExclusiveWin32InfoEXT</a> structure <strong class=\"purple\">must</strong> be included in the <code>pNext</code> chain" 30248 } 30249 ] 30250 }, 30251 "VkDeviceGroupSwapchainCreateInfoKHR": { 30252 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 30253 { 30254 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType", 30255 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>" 30256 }, 30257 { 30258 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter", 30259 "text": " <code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values" 30260 }, 30261 { 30262 "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask", 30263 "text": " <code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 30264 } 30265 ] 30266 }, 30267 "VkSwapchainDisplayNativeHdrCreateInfoAMD": { 30268 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [ 30269 { 30270 "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-sType-sType", 30271 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD</code>" 30272 }, 30273 { 30274 "vuid": "VUID-VkSwapchainDisplayNativeHdrCreateInfoAMD-localDimmingEnable-04449", 30275 "text": " It is only valid to set <code>localDimmingEnable</code> to <code>VK_TRUE</code> if <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>::<code>localDimmingSupport</code> is supported" 30276 } 30277 ] 30278 }, 30279 "vkSetLocalDimmingAMD": { 30280 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_AMD_display_native_hdr)": [ 30281 { 30282 "vuid": "VUID-vkSetLocalDimmingAMD-device-parameter", 30283 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30284 }, 30285 { 30286 "vuid": "VUID-vkSetLocalDimmingAMD-swapChain-parameter", 30287 "text": " <code>swapChain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30288 }, 30289 { 30290 "vuid": "VUID-vkSetLocalDimmingAMD-commonparent", 30291 "text": " Both of <code>device</code>, and <code>swapChain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30292 }, 30293 { 30294 "vuid": "VUID-vkSetLocalDimmingAMD-XXXXX", 30295 "text": " It is only valid to call <a href=\"#vkSetLocalDimmingAMD\">vkSetLocalDimmingAMD</a> if <a href=\"#VkDisplayNativeHdrSurfaceCapabilitiesAMD\">VkDisplayNativeHdrSurfaceCapabilitiesAMD</a>::<code>localDimmingSupport</code> is supported" 30296 } 30297 ] 30298 }, 30299 "VkSwapchainCounterCreateInfoEXT": { 30300 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [ 30301 { 30302 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244", 30303 "text": " The bits in <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>surface</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2EXT\">vkGetPhysicalDeviceSurfaceCapabilities2EXT</a>" 30304 }, 30305 { 30306 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType", 30307 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>" 30308 }, 30309 { 30310 "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter", 30311 "text": " <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values" 30312 } 30313 ] 30314 }, 30315 "vkGetSwapchainCounterEXT": { 30316 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [ 30317 { 30318 "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245", 30319 "text": " One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine" 30320 }, 30321 { 30322 "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter", 30323 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30324 }, 30325 { 30326 "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter", 30327 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30328 }, 30329 { 30330 "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter", 30331 "text": " <code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value" 30332 }, 30333 { 30334 "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter", 30335 "text": " <code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value" 30336 }, 30337 { 30338 "vuid": "VUID-vkGetSwapchainCounterEXT-commonparent", 30339 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30340 } 30341 ] 30342 }, 30343 "vkDestroySwapchainKHR": { 30344 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 30345 { 30346 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282", 30347 "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution" 30348 }, 30349 { 30350 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283", 30351 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 30352 }, 30353 { 30354 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284", 30355 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 30356 }, 30357 { 30358 "vuid": "VUID-vkDestroySwapchainKHR-device-parameter", 30359 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30360 }, 30361 { 30362 "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter", 30363 "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30364 }, 30365 { 30366 "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter", 30367 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 30368 }, 30369 { 30370 "vuid": "VUID-vkDestroySwapchainKHR-commonparent", 30371 "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30372 } 30373 ] 30374 }, 30375 "vkCreateSharedSwapchainsKHR": { 30376 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [ 30377 { 30378 "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter", 30379 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30380 }, 30381 { 30382 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter", 30383 "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structures" 30384 }, 30385 { 30386 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter", 30387 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 30388 }, 30389 { 30390 "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter", 30391 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles" 30392 }, 30393 { 30394 "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength", 30395 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 30396 } 30397 ] 30398 }, 30399 "vkGetSwapchainImagesKHR": { 30400 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 30401 { 30402 "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter", 30403 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30404 }, 30405 { 30406 "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter", 30407 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30408 }, 30409 { 30410 "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter", 30411 "text": " <code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 30412 }, 30413 { 30414 "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter", 30415 "text": " If the value referenced by <code>pSwapchainImageCount</code> is not <code>0</code>, and <code>pSwapchainImages</code> is not <code>NULL</code>, <code>pSwapchainImages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSwapchainImageCount</code> <a href=\"#VkImage\">VkImage</a> handles" 30416 }, 30417 { 30418 "vuid": "VUID-vkGetSwapchainImagesKHR-commonparent", 30419 "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30420 } 30421 ] 30422 }, 30423 "vkAcquireNextImageKHR": { 30424 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 30425 { 30426 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285", 30427 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state" 30428 }, 30429 { 30430 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286", 30431 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled" 30432 }, 30433 { 30434 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779", 30435 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending" 30436 }, 30437 { 30438 "vuid": "VUID-vkAcquireNextImageKHR-fence-01287", 30439 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue" 30440 }, 30441 { 30442 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780", 30443 "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 30444 }, 30445 { 30446 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802", 30447 "text": " If the number of currently acquired images is greater than the difference between the number of images in <code>swapchain</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, <code>timeout</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>" 30448 }, 30449 { 30450 "vuid": "VUID-vkAcquireNextImageKHR-device-parameter", 30451 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30452 }, 30453 { 30454 "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter", 30455 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30456 }, 30457 { 30458 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter", 30459 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 30460 }, 30461 { 30462 "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter", 30463 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 30464 }, 30465 { 30466 "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter", 30467 "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 30468 }, 30469 { 30470 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent", 30471 "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 30472 }, 30473 { 30474 "vuid": "VUID-vkAcquireNextImageKHR-fence-parent", 30475 "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 30476 }, 30477 { 30478 "vuid": "VUID-vkAcquireNextImageKHR-commonparent", 30479 "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30480 } 30481 ], 30482 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 30483 { 30484 "vuid": "VUID-vkAcquireNextImageKHR-semaphore-03265", 30485 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>" 30486 } 30487 ] 30488 }, 30489 "vkAcquireNextImage2KHR": { 30490 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 30491 { 30492 "vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803", 30493 "text": " If the number of currently acquired images is greater than the difference between the number of images in the <code>swapchain</code> member of <code>pAcquireInfo</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, the <code>timeout</code> member of <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>" 30494 }, 30495 { 30496 "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter", 30497 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30498 }, 30499 { 30500 "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter", 30501 "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a> structure" 30502 }, 30503 { 30504 "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter", 30505 "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 30506 } 30507 ] 30508 }, 30509 "VkAcquireNextImageInfoKHR": { 30510 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 30511 { 30512 "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675", 30513 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state" 30514 }, 30515 { 30516 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288", 30517 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled" 30518 }, 30519 { 30520 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781", 30521 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending" 30522 }, 30523 { 30524 "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289", 30525 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue" 30526 }, 30527 { 30528 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782", 30529 "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 30530 }, 30531 { 30532 "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290", 30533 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask" 30534 }, 30535 { 30536 "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291", 30537 "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero" 30538 }, 30539 { 30540 "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType", 30541 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>" 30542 }, 30543 { 30544 "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext", 30545 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 30546 }, 30547 { 30548 "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter", 30549 "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handle" 30550 }, 30551 { 30552 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter", 30553 "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSemaphore\">VkSemaphore</a> handle" 30554 }, 30555 { 30556 "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter", 30557 "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFence\">VkFence</a> handle" 30558 }, 30559 { 30560 "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent", 30561 "text": " Each of <code>fence</code>, <code>semaphore</code>, and <code>swapchain</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30562 } 30563 ], 30564 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 30565 { 30566 "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-03266", 30567 "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>" 30568 } 30569 ] 30570 }, 30571 "vkQueuePresentKHR": { 30572 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 30573 { 30574 "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292", 30575 "text": " Each element of <code>pSwapchains</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a swapchain that is created for a surface for which presentation is supported from <code>queue</code> as determined using a call to <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>" 30576 }, 30577 { 30578 "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294", 30579 "text": " When a semaphore wait operation referring to a binary semaphore defined by the elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> executes on <code>queue</code>, there <strong class=\"purple\">must</strong> be no other queues waiting on the same semaphore" 30580 }, 30581 { 30582 "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295", 30583 "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution" 30584 }, 30585 { 30586 "vuid": "VUID-vkQueuePresentKHR-queue-parameter", 30587 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 30588 }, 30589 { 30590 "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter", 30591 "text": " <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a> structure" 30592 } 30593 ], 30594 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [ 30595 { 30596 "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293", 30597 "text": " If more than one member of <code>pSwapchains</code> was created from a display surface, all display surfaces referenced that refer to the same display <strong class=\"purple\">must</strong> use the same display mode" 30598 } 30599 ], 30600 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 30601 { 30602 "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03267", 30603 "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be created with a <a href=\"#VkSemaphoreType\">VkSemaphoreType</a> of <code>VK_SEMAPHORE_TYPE_BINARY</code>" 30604 }, 30605 { 30606 "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-03268", 30607 "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> reference a semaphore signal operation that has been submitted for execution and any semaphore signal operations on which it depends (if any) <strong class=\"purple\">must</strong> have also been submitted for execution" 30608 } 30609 ] 30610 }, 30611 "VkPresentInfoKHR": { 30612 "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [ 30613 { 30614 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296", 30615 "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>" 30616 } 30617 ], 30618 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [ 30619 { 30620 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430", 30621 "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>" 30622 } 30623 ], 30624 "(VK_KHR_surface)+(VK_KHR_swapchain)": [ 30625 { 30626 "vuid": "VUID-VkPresentInfoKHR-sType-sType", 30627 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>" 30628 }, 30629 { 30630 "vuid": "VUID-VkPresentInfoKHR-pNext-pNext", 30631 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupPresentInfoKHR\">VkDeviceGroupPresentInfoKHR</a>, <a href=\"#VkDisplayPresentInfoKHR\">VkDisplayPresentInfoKHR</a>, <a href=\"#VkPresentFrameTokenGGP\">VkPresentFrameTokenGGP</a>, <a href=\"#VkPresentRegionsKHR\">VkPresentRegionsKHR</a>, or <a href=\"#VkPresentTimesInfoGOOGLE\">VkPresentTimesInfoGOOGLE</a>" 30632 }, 30633 { 30634 "vuid": "VUID-VkPresentInfoKHR-sType-unique", 30635 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 30636 }, 30637 { 30638 "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter", 30639 "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <a href=\"#VkSemaphore\">VkSemaphore</a> handles" 30640 }, 30641 { 30642 "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter", 30643 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles" 30644 }, 30645 { 30646 "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter", 30647 "text": " <code>pImageIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values" 30648 }, 30649 { 30650 "vuid": "VUID-VkPresentInfoKHR-pResults-parameter", 30651 "text": " If <code>pResults</code> is not <code>NULL</code>, <code>pResults</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkResult\">VkResult</a> values" 30652 }, 30653 { 30654 "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength", 30655 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 30656 }, 30657 { 30658 "vuid": "VUID-VkPresentInfoKHR-commonparent", 30659 "text": " Both of the elements of <code>pSwapchains</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30660 } 30661 ] 30662 }, 30663 "VkPresentRegionsKHR": { 30664 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [ 30665 { 30666 "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260", 30667 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is included in the <code>pNext</code> chain of this <code>VkPresentRegionsKHR</code> structure" 30668 }, 30669 { 30670 "vuid": "VUID-VkPresentRegionsKHR-sType-sType", 30671 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>" 30672 }, 30673 { 30674 "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter", 30675 "text": " If <code>pRegions</code> is not <code>NULL</code>, <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkPresentRegionKHR\">VkPresentRegionKHR</a> structures" 30676 }, 30677 { 30678 "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength", 30679 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 30680 } 30681 ] 30682 }, 30683 "VkPresentRegionKHR": { 30684 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [ 30685 { 30686 "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter", 30687 "text": " If <code>rectangleCount</code> is not <code>0</code>, and <code>pRectangles</code> is not <code>NULL</code>, <code>pRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectangleCount</code> valid <a href=\"#VkRectLayerKHR\">VkRectLayerKHR</a> structures" 30688 } 30689 ] 30690 }, 30691 "VkRectLayerKHR": { 30692 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [ 30693 { 30694 "vuid": "VUID-VkRectLayerKHR-offset-01261", 30695 "text": " The sum of <code>offset</code> and <code>extent</code> <strong class=\"purple\">must</strong> be no greater than the <code>imageExtent</code> member of the <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure passed to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>" 30696 }, 30697 { 30698 "vuid": "VUID-VkRectLayerKHR-layer-01262", 30699 "text": " <code>layer</code> <strong class=\"purple\">must</strong> be less than the <code>imageArrayLayers</code> member of the <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a> structure passed to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>" 30700 } 30701 ] 30702 }, 30703 "VkDisplayPresentInfoKHR": { 30704 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [ 30705 { 30706 "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257", 30707 "text": " <code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented" 30708 }, 30709 { 30710 "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258", 30711 "text": " <code>dstRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the <code>visibleRegion</code> parameter of the display mode the swapchain being presented uses" 30712 }, 30713 { 30714 "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259", 30715 "text": " If the <code>persistentContent</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display the present operation targets then <code>persistent</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>" 30716 }, 30717 { 30718 "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType", 30719 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>" 30720 } 30721 ] 30722 }, 30723 "VkDeviceGroupPresentInfoKHR": { 30724 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [ 30725 { 30726 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297", 30727 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>" 30728 }, 30729 { 30730 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298", 30731 "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero" 30732 }, 30733 { 30734 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299", 30735 "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and some physical device in the logical device <strong class=\"purple\">must</strong> include that bit in its <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>" 30736 }, 30737 { 30738 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300", 30739 "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have a value for which all set bits are set in one of the elements of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>" 30740 }, 30741 { 30742 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301", 30743 "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR</code>, then for each bit set in each element of <code>pDeviceMasks</code>, the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero" 30744 }, 30745 { 30746 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302", 30747 "text": " The value of each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be equal to the device mask passed in <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a>::<code>deviceMask</code> when the image index was last acquired" 30748 }, 30749 { 30750 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303", 30751 "text": " <code>mode</code> <strong class=\"purple\">must</strong> have exactly one bit set, and that bit <strong class=\"purple\">must</strong> have been included in <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>::<code>modes</code>" 30752 }, 30753 { 30754 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType", 30755 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>" 30756 }, 30757 { 30758 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter", 30759 "text": " If <code>swapchainCount</code> is not <code>0</code>, <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values" 30760 }, 30761 { 30762 "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter", 30763 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value" 30764 } 30765 ] 30766 }, 30767 "VkPresentTimesInfoGOOGLE": { 30768 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [ 30769 { 30770 "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247", 30771 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is included in the <code>pNext</code> chain of this <code>VkPresentTimesInfoGOOGLE</code> structure" 30772 }, 30773 { 30774 "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType", 30775 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>" 30776 }, 30777 { 30778 "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter", 30779 "text": " If <code>pTimes</code> is not <code>NULL</code>, <code>pTimes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkPresentTimeGOOGLE\">VkPresentTimeGOOGLE</a> structures" 30780 }, 30781 { 30782 "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength", 30783 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 30784 } 30785 ] 30786 }, 30787 "VkPresentFrameTokenGGP": { 30788 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GGP_frame_token)": [ 30789 { 30790 "vuid": "VUID-VkPresentFrameTokenGGP-frameToken-02680", 30791 "text": " <code>frameToken</code> <strong class=\"purple\">must</strong> be a valid <code>GgpFrameToken</code>" 30792 }, 30793 { 30794 "vuid": "VUID-VkPresentFrameTokenGGP-sType-sType", 30795 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP</code>" 30796 } 30797 ] 30798 }, 30799 "vkSetHdrMetadataEXT": { 30800 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [ 30801 { 30802 "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter", 30803 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30804 }, 30805 { 30806 "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter", 30807 "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkSwapchainKHR\">VkSwapchainKHR</a> handles" 30808 }, 30809 { 30810 "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter", 30811 "text": " <code>pMetadata</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <a href=\"#VkHdrMetadataEXT\">VkHdrMetadataEXT</a> structures" 30812 }, 30813 { 30814 "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength", 30815 "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 30816 }, 30817 { 30818 "vuid": "VUID-vkSetHdrMetadataEXT-commonparent", 30819 "text": " Both of <code>device</code>, and the elements of <code>pSwapchains</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkInstance\">VkInstance</a>" 30820 } 30821 ] 30822 }, 30823 "VkHdrMetadataEXT": { 30824 "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [ 30825 { 30826 "vuid": "VUID-VkHdrMetadataEXT-sType-sType", 30827 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HDR_METADATA_EXT</code>" 30828 }, 30829 { 30830 "vuid": "VUID-VkHdrMetadataEXT-pNext-pNext", 30831 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 30832 } 30833 ] 30834 }, 30835 "VkDeferredOperationInfoKHR": { 30836 "(VK_KHR_deferred_host_operations)": [ 30837 { 30838 "vuid": "VUID-VkDeferredOperationInfoKHR-operationHandle-03433", 30839 "text": " Any previous deferred operation that was associated with <code>operationHandle</code> <strong class=\"purple\">must</strong> be complete" 30840 }, 30841 { 30842 "vuid": "VUID-VkDeferredOperationInfoKHR-sType-sType", 30843 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEFERRED_OPERATION_INFO_KHR</code>" 30844 } 30845 ] 30846 }, 30847 "vkCreateDeferredOperationKHR": { 30848 "(VK_KHR_deferred_host_operations)": [ 30849 { 30850 "vuid": "VUID-vkCreateDeferredOperationKHR-device-parameter", 30851 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30852 }, 30853 { 30854 "vuid": "VUID-vkCreateDeferredOperationKHR-pAllocator-parameter", 30855 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 30856 }, 30857 { 30858 "vuid": "VUID-vkCreateDeferredOperationKHR-pDeferredOperation-parameter", 30859 "text": " <code>pDeferredOperation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle" 30860 } 30861 ] 30862 }, 30863 "vkDeferredOperationJoinKHR": { 30864 "(VK_KHR_deferred_host_operations)": [ 30865 { 30866 "vuid": "VUID-vkDeferredOperationJoinKHR-device-parameter", 30867 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30868 }, 30869 { 30870 "vuid": "VUID-vkDeferredOperationJoinKHR-operation-parameter", 30871 "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle" 30872 }, 30873 { 30874 "vuid": "VUID-vkDeferredOperationJoinKHR-operation-parent", 30875 "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 30876 } 30877 ] 30878 }, 30879 "vkDestroyDeferredOperationKHR": { 30880 "(VK_KHR_deferred_host_operations)": [ 30881 { 30882 "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03434", 30883 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>operation</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 30884 }, 30885 { 30886 "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03435", 30887 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>operation</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 30888 }, 30889 { 30890 "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-03436", 30891 "text": " <code>operation</code> <strong class=\"purple\">must</strong> be completed" 30892 }, 30893 { 30894 "vuid": "VUID-vkDestroyDeferredOperationKHR-device-parameter", 30895 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30896 }, 30897 { 30898 "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parameter", 30899 "text": " If <code>operation</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle" 30900 }, 30901 { 30902 "vuid": "VUID-vkDestroyDeferredOperationKHR-pAllocator-parameter", 30903 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 30904 }, 30905 { 30906 "vuid": "VUID-vkDestroyDeferredOperationKHR-operation-parent", 30907 "text": " If <code>operation</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 30908 } 30909 ] 30910 }, 30911 "vkGetDeferredOperationMaxConcurrencyKHR": { 30912 "(VK_KHR_deferred_host_operations)": [ 30913 { 30914 "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-device-parameter", 30915 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30916 }, 30917 { 30918 "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parameter", 30919 "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle" 30920 }, 30921 { 30922 "vuid": "VUID-vkGetDeferredOperationMaxConcurrencyKHR-operation-parent", 30923 "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 30924 } 30925 ] 30926 }, 30927 "vkGetDeferredOperationResultKHR": { 30928 "(VK_KHR_deferred_host_operations)": [ 30929 { 30930 "vuid": "VUID-vkGetDeferredOperationResultKHR-device-parameter", 30931 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30932 }, 30933 { 30934 "vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parameter", 30935 "text": " <code>operation</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeferredOperationKHR\">VkDeferredOperationKHR</a> handle" 30936 }, 30937 { 30938 "vuid": "VUID-vkGetDeferredOperationResultKHR-operation-parent", 30939 "text": " <code>operation</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 30940 } 30941 ] 30942 }, 30943 "vkCreatePrivateDataSlotEXT": { 30944 "(VK_EXT_private_data)": [ 30945 { 30946 "vuid": "VUID-vkCreatePrivateDataSlotEXT-device-parameter", 30947 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30948 }, 30949 { 30950 "vuid": "VUID-vkCreatePrivateDataSlotEXT-pCreateInfo-parameter", 30951 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPrivateDataSlotCreateInfoEXT\">VkPrivateDataSlotCreateInfoEXT</a> structure" 30952 }, 30953 { 30954 "vuid": "VUID-vkCreatePrivateDataSlotEXT-pAllocator-parameter", 30955 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 30956 }, 30957 { 30958 "vuid": "VUID-vkCreatePrivateDataSlotEXT-pPrivateDataSlot-parameter", 30959 "text": " <code>pPrivateDataSlot</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle" 30960 } 30961 ] 30962 }, 30963 "VkPrivateDataSlotCreateInfoEXT": { 30964 "(VK_EXT_private_data)": [ 30965 { 30966 "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-sType-sType", 30967 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT</code>" 30968 }, 30969 { 30970 "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-pNext-pNext", 30971 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 30972 }, 30973 { 30974 "vuid": "VUID-VkPrivateDataSlotCreateInfoEXT-flags-zerobitmask", 30975 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 30976 } 30977 ] 30978 }, 30979 "vkDestroyPrivateDataSlotEXT": { 30980 "(VK_EXT_private_data)": [ 30981 { 30982 "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04062", 30983 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>privateDataSlot</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 30984 }, 30985 { 30986 "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04063", 30987 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>privateDataSlot</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 30988 }, 30989 { 30990 "vuid": "VUID-vkDestroyPrivateDataSlotEXT-device-parameter", 30991 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 30992 }, 30993 { 30994 "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parameter", 30995 "text": " If <code>privateDataSlot</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle" 30996 }, 30997 { 30998 "vuid": "VUID-vkDestroyPrivateDataSlotEXT-pAllocator-parameter", 30999 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 31000 }, 31001 { 31002 "vuid": "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent", 31003 "text": " If <code>privateDataSlot</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 31004 } 31005 ] 31006 }, 31007 "vkSetPrivateDataEXT": { 31008 "(VK_EXT_private_data)": [ 31009 { 31010 "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04016", 31011 "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be <code>device</code> or a child of <code>device</code>" 31012 }, 31013 { 31014 "vuid": "VUID-vkSetPrivateDataEXT-objectHandle-04017", 31015 "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid handle to an object of type <code>objectType</code>" 31016 }, 31017 { 31018 "vuid": "VUID-vkSetPrivateDataEXT-device-parameter", 31019 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 31020 }, 31021 { 31022 "vuid": "VUID-vkSetPrivateDataEXT-objectType-parameter", 31023 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value" 31024 }, 31025 { 31026 "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parameter", 31027 "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle" 31028 }, 31029 { 31030 "vuid": "VUID-vkSetPrivateDataEXT-privateDataSlot-parent", 31031 "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 31032 } 31033 ] 31034 }, 31035 "vkGetPrivateDataEXT": { 31036 "(VK_EXT_private_data)": [ 31037 { 31038 "vuid": "VUID-vkGetPrivateDataEXT-objectType-04018", 31039 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be <a href=\"#VkDevice\">VkDevice</a> or an object type whose parent is <a href=\"#VkDevice\">VkDevice</a>" 31040 }, 31041 { 31042 "vuid": "VUID-vkGetPrivateDataEXT-device-parameter", 31043 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 31044 }, 31045 { 31046 "vuid": "VUID-vkGetPrivateDataEXT-objectType-parameter", 31047 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value" 31048 }, 31049 { 31050 "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parameter", 31051 "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrivateDataSlotEXT\">VkPrivateDataSlotEXT</a> handle" 31052 }, 31053 { 31054 "vuid": "VUID-vkGetPrivateDataEXT-pData-parameter", 31055 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value" 31056 }, 31057 { 31058 "vuid": "VUID-vkGetPrivateDataEXT-privateDataSlot-parent", 31059 "text": " <code>privateDataSlot</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 31060 } 31061 ] 31062 }, 31063 "vkCmdTraceRaysNV": { 31064 "core": [ 31065 { 31066 "vuid": "VUID-vkCmdTraceRaysNV-magFilter-04553", 31067 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 31068 }, 31069 { 31070 "vuid": "VUID-vkCmdTraceRaysNV-None-02691", 31071 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 31072 }, 31073 { 31074 "vuid": "VUID-vkCmdTraceRaysNV-None-02697", 31075 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 31076 }, 31077 { 31078 "vuid": "VUID-vkCmdTraceRaysNV-None-02698", 31079 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 31080 }, 31081 { 31082 "vuid": "VUID-vkCmdTraceRaysNV-None-02699", 31083 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 31084 }, 31085 { 31086 "vuid": "VUID-vkCmdTraceRaysNV-None-02700", 31087 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 31088 }, 31089 { 31090 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02701", 31091 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 31092 }, 31093 { 31094 "vuid": "VUID-vkCmdTraceRaysNV-None-02859", 31095 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 31096 }, 31097 { 31098 "vuid": "VUID-vkCmdTraceRaysNV-None-02702", 31099 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 31100 }, 31101 { 31102 "vuid": "VUID-vkCmdTraceRaysNV-None-02703", 31103 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 31104 }, 31105 { 31106 "vuid": "VUID-vkCmdTraceRaysNV-None-02704", 31107 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 31108 }, 31109 { 31110 "vuid": "VUID-vkCmdTraceRaysNV-None-02705", 31111 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 31112 }, 31113 { 31114 "vuid": "VUID-vkCmdTraceRaysNV-None-02706", 31115 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 31116 }, 31117 { 31118 "vuid": "VUID-vkCmdTraceRaysNV-None-04115", 31119 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 31120 }, 31121 { 31122 "vuid": "VUID-vkCmdTraceRaysNV-OpImageWrite-04469", 31123 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 31124 }, 31125 { 31126 "vuid": "VUID-vkCmdTraceRaysNV-None-03429", 31127 "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline" 31128 }, 31129 { 31130 "vuid": "VUID-vkCmdTraceRaysNV-maxRecursionDepth-03430", 31131 "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline" 31132 }, 31133 { 31134 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-04042", 31135 "text": " If <code>raygenShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31136 }, 31137 { 31138 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455", 31139 "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>" 31140 }, 31141 { 31142 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456", 31143 "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>" 31144 }, 31145 { 31146 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-04043", 31147 "text": " If <code>missShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31148 }, 31149 { 31150 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457", 31151 "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>" 31152 }, 31153 { 31154 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458", 31155 "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>" 31156 }, 31157 { 31158 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-04044", 31159 "text": " If <code>hitShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31160 }, 31161 { 31162 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459", 31163 "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>" 31164 }, 31165 { 31166 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460", 31167 "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>" 31168 }, 31169 { 31170 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-04045", 31171 "text": " If <code>callableShaderBindingTableBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31172 }, 31173 { 31174 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461", 31175 "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>" 31176 }, 31177 { 31178 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462", 31179 "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>" 31180 }, 31181 { 31182 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463", 31183 "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>" 31184 }, 31185 { 31186 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464", 31187 "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>" 31188 }, 31189 { 31190 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465", 31191 "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>" 31192 }, 31193 { 31194 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466", 31195 "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>" 31196 }, 31197 { 31198 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467", 31199 "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>" 31200 }, 31201 { 31202 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468", 31203 "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>" 31204 }, 31205 { 31206 "vuid": "VUID-vkCmdTraceRaysNV-width-02469", 31207 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 31208 }, 31209 { 31210 "vuid": "VUID-vkCmdTraceRaysNV-height-02470", 31211 "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 31212 }, 31213 { 31214 "vuid": "VUID-vkCmdTraceRaysNV-depth-02471", 31215 "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 31216 } 31217 ], 31218 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 31219 { 31220 "vuid": "VUID-vkCmdTraceRaysNV-None-02692", 31221 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 31222 } 31223 ], 31224 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 31225 { 31226 "vuid": "VUID-vkCmdTraceRaysNV-None-02693", 31227 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 31228 } 31229 ], 31230 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 31231 { 31232 "vuid": "VUID-vkCmdTraceRaysNV-filterCubic-02694", 31233 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 31234 }, 31235 { 31236 "vuid": "VUID-vkCmdTraceRaysNV-filterCubicMinmax-02695", 31237 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 31238 } 31239 ], 31240 "(VK_NV_corner_sampled_image)": [ 31241 { 31242 "vuid": "VUID-vkCmdTraceRaysNV-flags-02696", 31243 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 31244 } 31245 ], 31246 "(VK_VERSION_1_1)": [ 31247 { 31248 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02707", 31249 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 31250 }, 31251 { 31252 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02712", 31253 "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource" 31254 }, 31255 { 31256 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02713", 31257 "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource" 31258 } 31259 ], 31260 "(VK_EXT_shader_image_atomic_int64)": [ 31261 { 31262 "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04470", 31263 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 31264 }, 31265 { 31266 "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04471", 31267 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 31268 }, 31269 { 31270 "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04472", 31271 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 31272 }, 31273 { 31274 "vuid": "VUID-vkCmdTraceRaysNV-SampledType-04473", 31275 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 31276 }, 31277 { 31278 "vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04474", 31279 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 31280 }, 31281 { 31282 "vuid": "VUID-vkCmdTraceRaysNV-sparseImageInt64Atomics-04475", 31283 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 31284 } 31285 ], 31286 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 31287 { 31288 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter", 31289 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 31290 }, 31291 { 31292 "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter", 31293 "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 31294 }, 31295 { 31296 "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter", 31297 "text": " If <code>missShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>missShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 31298 }, 31299 { 31300 "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter", 31301 "text": " If <code>hitShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>hitShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 31302 }, 31303 { 31304 "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter", 31305 "text": " If <code>callableShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callableShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 31306 }, 31307 { 31308 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording", 31309 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 31310 }, 31311 { 31312 "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool", 31313 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 31314 }, 31315 { 31316 "vuid": "VUID-vkCmdTraceRaysNV-renderpass", 31317 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 31318 }, 31319 { 31320 "vuid": "VUID-vkCmdTraceRaysNV-commonparent", 31321 "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 31322 } 31323 ] 31324 }, 31325 "vkCmdTraceRaysKHR": { 31326 "core": [ 31327 { 31328 "vuid": "VUID-vkCmdTraceRaysKHR-magFilter-04553", 31329 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 31330 }, 31331 { 31332 "vuid": "VUID-vkCmdTraceRaysKHR-None-02691", 31333 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 31334 }, 31335 { 31336 "vuid": "VUID-vkCmdTraceRaysKHR-None-02697", 31337 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 31338 }, 31339 { 31340 "vuid": "VUID-vkCmdTraceRaysKHR-None-02698", 31341 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 31342 }, 31343 { 31344 "vuid": "VUID-vkCmdTraceRaysKHR-None-02699", 31345 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 31346 }, 31347 { 31348 "vuid": "VUID-vkCmdTraceRaysKHR-None-02700", 31349 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 31350 }, 31351 { 31352 "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02701", 31353 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 31354 }, 31355 { 31356 "vuid": "VUID-vkCmdTraceRaysKHR-None-02859", 31357 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 31358 }, 31359 { 31360 "vuid": "VUID-vkCmdTraceRaysKHR-None-02702", 31361 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 31362 }, 31363 { 31364 "vuid": "VUID-vkCmdTraceRaysKHR-None-02703", 31365 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 31366 }, 31367 { 31368 "vuid": "VUID-vkCmdTraceRaysKHR-None-02704", 31369 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 31370 }, 31371 { 31372 "vuid": "VUID-vkCmdTraceRaysKHR-None-02705", 31373 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 31374 }, 31375 { 31376 "vuid": "VUID-vkCmdTraceRaysKHR-None-02706", 31377 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 31378 }, 31379 { 31380 "vuid": "VUID-vkCmdTraceRaysKHR-None-04115", 31381 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 31382 }, 31383 { 31384 "vuid": "VUID-vkCmdTraceRaysKHR-OpImageWrite-04469", 31385 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 31386 }, 31387 { 31388 "vuid": "VUID-vkCmdTraceRaysKHR-None-03429", 31389 "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline" 31390 }, 31391 { 31392 "vuid": "VUID-vkCmdTraceRaysKHR-maxRecursionDepth-03430", 31393 "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline" 31394 }, 31395 { 31396 "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04019", 31397 "text": " If <code>pRayGenShaderBindingTable->buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31398 }, 31399 { 31400 "vuid": "VUID-vkCmdTraceRaysKHR-offset-04020", 31401 "text": " The <code>offset</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of the <code>pRayGenShaderBindingTable->buffer</code>" 31402 }, 31403 { 31404 "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04021", 31405 "text": " <code>pRayGenShaderBindingTable->offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>" 31406 }, 31407 { 31408 "vuid": "VUID-vkCmdTraceRaysKHR-pRayGenShaderBindingTable-04022", 31409 "text": " <span class=\"eq\"><code>pRayGenShaderBindingTable->offset</code> + <code>pRayGenShaderBindingTable->size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pRayGenShaderBindingTable->buffer</code>" 31410 }, 31411 { 31412 "vuid": "VUID-vkCmdTraceRaysKHR-size-04023", 31413 "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member" 31414 }, 31415 { 31416 "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-04024", 31417 "text": " If <code>pMissShaderBindingTable->buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31418 }, 31419 { 31420 "vuid": "VUID-vkCmdTraceRaysKHR-offset-04025", 31421 "text": " The <code>offset</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pMissShaderBindingTable->buffer</code>" 31422 }, 31423 { 31424 "vuid": "VUID-vkCmdTraceRaysKHR-offset-04026", 31425 "text": " The <code>offset</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>" 31426 }, 31427 { 31428 "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-04027", 31429 "text": " <span class=\"eq\"><code>pMissShaderBindingTable->offset</code> + <code>pMissShaderBindingTable->size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pMissShaderBindingTable->buffer</code>" 31430 }, 31431 { 31432 "vuid": "VUID-vkCmdTraceRaysKHR-stride-04028", 31433 "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>" 31434 }, 31435 { 31436 "vuid": "VUID-vkCmdTraceRaysKHR-stride-04029", 31437 "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>" 31438 }, 31439 { 31440 "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04030", 31441 "text": " If <code>pHitShaderBindingTable->buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31442 }, 31443 { 31444 "vuid": "VUID-vkCmdTraceRaysKHR-offset-04031", 31445 "text": " The <code>offset</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pHitShaderBindingTable->buffer</code>" 31446 }, 31447 { 31448 "vuid": "VUID-vkCmdTraceRaysKHR-offset-04032", 31449 "text": " The <code>offset</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>" 31450 }, 31451 { 31452 "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-04033", 31453 "text": " <span class=\"eq\"><code>pHitShaderBindingTable->offset</code> + <code>pHitShaderBindingTable->size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pHitShaderBindingTable->buffer</code>" 31454 }, 31455 { 31456 "vuid": "VUID-vkCmdTraceRaysKHR-stride-04034", 31457 "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>" 31458 }, 31459 { 31460 "vuid": "VUID-vkCmdTraceRaysKHR-stride-04035", 31461 "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>" 31462 }, 31463 { 31464 "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-04036", 31465 "text": " If <code>pCallableShaderBindingTable->buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31466 }, 31467 { 31468 "vuid": "VUID-vkCmdTraceRaysKHR-offset-04037", 31469 "text": " The <code>offset</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pCallableShaderBindingTable->buffer</code>" 31470 }, 31471 { 31472 "vuid": "VUID-vkCmdTraceRaysKHR-offset-04038", 31473 "text": " The <code>offset</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>" 31474 }, 31475 { 31476 "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-04039", 31477 "text": " <span class=\"eq\"><code>pCallableShaderBindingTable->offset</code> + <code>pCallableShaderBindingTable->size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pCallableShaderBindingTable->buffer</code>" 31478 }, 31479 { 31480 "vuid": "VUID-vkCmdTraceRaysKHR-stride-04040", 31481 "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>" 31482 }, 31483 { 31484 "vuid": "VUID-vkCmdTraceRaysKHR-stride-04041", 31485 "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>" 31486 }, 31487 { 31488 "vuid": "VUID-vkCmdTraceRaysKHR-flags-03508", 31489 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 31490 }, 31491 { 31492 "vuid": "VUID-vkCmdTraceRaysKHR-flags-03509", 31493 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 31494 }, 31495 { 31496 "vuid": "VUID-vkCmdTraceRaysKHR-flags-03510", 31497 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 31498 }, 31499 { 31500 "vuid": "VUID-vkCmdTraceRaysKHR-flags-03511", 31501 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> contain a valid miss shader" 31502 }, 31503 { 31504 "vuid": "VUID-vkCmdTraceRaysKHR-flags-03512", 31505 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an any hit shader <strong class=\"purple\">must</strong> not be set to zero" 31506 }, 31507 { 31508 "vuid": "VUID-vkCmdTraceRaysKHR-flags-03513", 31509 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero" 31510 }, 31511 { 31512 "vuid": "VUID-vkCmdTraceRaysKHR-flags-03514", 31513 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero" 31514 }, 31515 { 31516 "vuid": "VUID-vkCmdTraceRaysKHR-width-03505", 31517 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 31518 }, 31519 { 31520 "vuid": "VUID-vkCmdTraceRaysKHR-height-03506", 31521 "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 31522 }, 31523 { 31524 "vuid": "VUID-vkCmdTraceRaysKHR-depth-03507", 31525 "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 31526 } 31527 ], 31528 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 31529 { 31530 "vuid": "VUID-vkCmdTraceRaysKHR-None-02692", 31531 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 31532 } 31533 ], 31534 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 31535 { 31536 "vuid": "VUID-vkCmdTraceRaysKHR-None-02693", 31537 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 31538 } 31539 ], 31540 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 31541 { 31542 "vuid": "VUID-vkCmdTraceRaysKHR-filterCubic-02694", 31543 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 31544 }, 31545 { 31546 "vuid": "VUID-vkCmdTraceRaysKHR-filterCubicMinmax-02695", 31547 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 31548 } 31549 ], 31550 "(VK_NV_corner_sampled_image)": [ 31551 { 31552 "vuid": "VUID-vkCmdTraceRaysKHR-flags-02696", 31553 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 31554 } 31555 ], 31556 "(VK_VERSION_1_1)": [ 31557 { 31558 "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02707", 31559 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 31560 }, 31561 { 31562 "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02712", 31563 "text": " If <code>commandBuffer</code> is a protected command buffer, any resource written to by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be an unprotected resource" 31564 }, 31565 { 31566 "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-02713", 31567 "text": " If <code>commandBuffer</code> is a protected command buffer, pipeline stages other than the framebuffer-space and compute stages in the <code>VkPipeline</code> object bound to the pipeline bind point <strong class=\"purple\">must</strong> not write to any resource" 31568 } 31569 ], 31570 "(VK_EXT_shader_image_atomic_int64)": [ 31571 { 31572 "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04470", 31573 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 31574 }, 31575 { 31576 "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04471", 31577 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 31578 }, 31579 { 31580 "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04472", 31581 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 31582 }, 31583 { 31584 "vuid": "VUID-vkCmdTraceRaysKHR-SampledType-04473", 31585 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 31586 }, 31587 { 31588 "vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04474", 31589 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 31590 }, 31591 { 31592 "vuid": "VUID-vkCmdTraceRaysKHR-sparseImageInt64Atomics-04475", 31593 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 31594 } 31595 ], 31596 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 31597 { 31598 "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-parameter", 31599 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 31600 }, 31601 { 31602 "vuid": "VUID-vkCmdTraceRaysKHR-pRaygenShaderBindingTable-parameter", 31603 "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure" 31604 }, 31605 { 31606 "vuid": "VUID-vkCmdTraceRaysKHR-pMissShaderBindingTable-parameter", 31607 "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure" 31608 }, 31609 { 31610 "vuid": "VUID-vkCmdTraceRaysKHR-pHitShaderBindingTable-parameter", 31611 "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure" 31612 }, 31613 { 31614 "vuid": "VUID-vkCmdTraceRaysKHR-pCallableShaderBindingTable-parameter", 31615 "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure" 31616 }, 31617 { 31618 "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-recording", 31619 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 31620 }, 31621 { 31622 "vuid": "VUID-vkCmdTraceRaysKHR-commandBuffer-cmdpool", 31623 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 31624 }, 31625 { 31626 "vuid": "VUID-vkCmdTraceRaysKHR-renderpass", 31627 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 31628 } 31629 ] 31630 }, 31631 "VkStridedBufferRegionKHR": { 31632 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 31633 { 31634 "vuid": "VUID-VkStridedBufferRegionKHR-buffer-03515", 31635 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>size</code> plus <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 31636 }, 31637 { 31638 "vuid": "VUID-VkStridedBufferRegionKHR-buffer-03516", 31639 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>stride</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>" 31640 }, 31641 { 31642 "vuid": "VUID-VkStridedBufferRegionKHR-buffer-parameter", 31643 "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 31644 } 31645 ] 31646 }, 31647 "vkCmdTraceRaysIndirectKHR": { 31648 "core": [ 31649 { 31650 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-magFilter-04553", 31651 "text": " If a <a href=\"#VkSampler\">VkSampler</a> created with <code>magFilter</code> or <code>minFilter</code> equal to <code>VK_FILTER_LINEAR</code> and <code>compareEnable</code> equal to <code>VK_FALSE</code> is used to sample a <a href=\"#VkImageView\">VkImageView</a> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>" 31652 }, 31653 { 31654 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02691", 31655 "text": " If a <code>VkImageView</code> is accessed using atomic operations as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT</code>" 31656 }, 31657 { 31658 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02697", 31659 "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 31660 }, 31661 { 31662 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02698", 31663 "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command, a push constant value <strong class=\"purple\">must</strong> have been set for the same pipeline bind point, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>" 31664 }, 31665 { 31666 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02699", 31667 "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the <code>VkPipeline</code> bound to the pipeline bind point used by this command" 31668 }, 31669 { 31670 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02700", 31671 "text": " A valid pipeline <strong class=\"purple\">must</strong> be bound to the pipeline bind point used by this command" 31672 }, 31673 { 31674 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02701", 31675 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set for <code>commandBuffer</code>, and done so after any previously bound pipeline with the corresponding state not specified as dynamic" 31676 }, 31677 { 31678 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02859", 31679 "text": " There <strong class=\"purple\">must</strong> not have been any calls to dynamic state setting commands for any state not specified as dynamic in the <code>VkPipeline</code> object bound to the pipeline bind point used by this command, since that pipeline was bound" 31680 }, 31681 { 31682 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02702", 31683 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage" 31684 }, 31685 { 31686 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02703", 31687 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage" 31688 }, 31689 { 31690 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02704", 31691 "text": " If the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a <code>VkSampler</code> object that uses unnormalized coordinates, that sampler <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage" 31692 }, 31693 { 31694 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02705", 31695 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 31696 }, 31697 { 31698 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02706", 31699 "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and if the <code>VkPipeline</code> object bound to the pipeline bind point used by this command accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of the buffer as specified in the descriptor set bound to the same pipeline bind point" 31700 }, 31701 { 31702 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-04115", 31703 "text": " If a <a href=\"#VkImageView\">VkImageView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 31704 }, 31705 { 31706 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-OpImageWrite-04469", 31707 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> is accessed using <code>OpImageWrite</code> as a result of this command, then the <code>Type</code> of the <code>Texel</code> operand of that instruction <strong class=\"purple\">must</strong> have at least as many components as the image view’s format." 31708 }, 31709 { 31710 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-03429", 31711 "text": " Any shader group handle referenced by this call <strong class=\"purple\">must</strong> have been queried from the currently bound ray tracing shader pipeline" 31712 }, 31713 { 31714 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-maxRecursionDepth-03430", 31715 "text": " This command <strong class=\"purple\">must</strong> not cause a shader call instruction to be executed from a shader invocation with a <a href=\"#ray-tracing-recursion-depth\">recursion depth</a> greater than the value of <code>maxRecursionDepth</code> used to create the bound ray tracing pipeline" 31716 }, 31717 { 31718 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04019", 31719 "text": " If <code>pRayGenShaderBindingTable->buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31720 }, 31721 { 31722 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04020", 31723 "text": " The <code>offset</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of the <code>pRayGenShaderBindingTable->buffer</code>" 31724 }, 31725 { 31726 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04021", 31727 "text": " <code>pRayGenShaderBindingTable->offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>" 31728 }, 31729 { 31730 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRayGenShaderBindingTable-04022", 31731 "text": " <span class=\"eq\"><code>pRayGenShaderBindingTable->offset</code> + <code>pRayGenShaderBindingTable->size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pRayGenShaderBindingTable->buffer</code>" 31732 }, 31733 { 31734 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-size-04023", 31735 "text": " The <code>size</code> member of <code>pRayGenShaderBindingTable</code> <strong class=\"purple\">must</strong> be equal to its <code>stride</code> member" 31736 }, 31737 { 31738 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-04024", 31739 "text": " If <code>pMissShaderBindingTable->buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31740 }, 31741 { 31742 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04025", 31743 "text": " The <code>offset</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pMissShaderBindingTable->buffer</code>" 31744 }, 31745 { 31746 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04026", 31747 "text": " The <code>offset</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>" 31748 }, 31749 { 31750 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-04027", 31751 "text": " <span class=\"eq\"><code>pMissShaderBindingTable->offset</code> + <code>pMissShaderBindingTable->size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pMissShaderBindingTable->buffer</code>" 31752 }, 31753 { 31754 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04028", 31755 "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>" 31756 }, 31757 { 31758 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04029", 31759 "text": " The <code>stride</code> member of <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>" 31760 }, 31761 { 31762 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04030", 31763 "text": " If <code>pHitShaderBindingTable->buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31764 }, 31765 { 31766 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04031", 31767 "text": " The <code>offset</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pHitShaderBindingTable->buffer</code>" 31768 }, 31769 { 31770 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04032", 31771 "text": " The <code>offset</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>" 31772 }, 31773 { 31774 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-04033", 31775 "text": " <span class=\"eq\"><code>pHitShaderBindingTable->offset</code> + <code>pHitShaderBindingTable->size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pHitShaderBindingTable->buffer</code>" 31776 }, 31777 { 31778 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04034", 31779 "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>" 31780 }, 31781 { 31782 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04035", 31783 "text": " The <code>stride</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>" 31784 }, 31785 { 31786 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-04036", 31787 "text": " If <code>pCallableShaderBindingTable->buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31788 }, 31789 { 31790 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04037", 31791 "text": " The <code>offset</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than the size of <code>pCallableShaderBindingTable->buffer</code>" 31792 }, 31793 { 31794 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-04038", 31795 "text": " The <code>offset</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupBaseAlignment</code>" 31796 }, 31797 { 31798 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-04039", 31799 "text": " <span class=\"eq\"><code>pCallableShaderBindingTable->offset</code> + <code>pCallableShaderBindingTable->size</code></span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>pCallableShaderBindingTable->buffer</code>" 31800 }, 31801 { 31802 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04040", 31803 "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>shaderGroupHandleSize</code>" 31804 }, 31805 { 31806 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-stride-04041", 31807 "text": " The <code>stride</code> member of <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesKHR</code>::<code>maxShaderGroupStride</code>" 31808 }, 31809 { 31810 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03508", 31811 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 31812 }, 31813 { 31814 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03509", 31815 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 31816 }, 31817 { 31818 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03510", 31819 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, the <code>buffer</code> member of <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 31820 }, 31821 { 31822 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03511", 31823 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR</code>, the shader group handle identified by <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> contain a valid miss shader" 31824 }, 31825 { 31826 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03512", 31827 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an any hit shader <strong class=\"purple\">must</strong> not be set to zero" 31828 }, 31829 { 31830 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03513", 31831 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute a closest hit shader <strong class=\"purple\">must</strong> not be set to zero" 31832 }, 31833 { 31834 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-03514", 31835 "text": " If the currently bound ray tracing pipeline was created with <code>flags</code> that included <code>VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR</code>, entries in <code>pHitShaderBindingTable</code> accessed as a result of this command in order to execute an intersection shader <strong class=\"purple\">must</strong> not be set to zero" 31836 }, 31837 { 31838 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-02708", 31839 "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object" 31840 }, 31841 { 31842 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-02709", 31843 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set" 31844 }, 31845 { 31846 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-02710", 31847 "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>" 31848 }, 31849 { 31850 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-offset-03517", 31851 "text": " <span class=\"eq\">(<code>offset</code> + <code>sizeof</code>(<code>VkTraceRaysIndirectCommandKHR</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>" 31852 }, 31853 { 31854 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-rayTracingIndirectTraceRays-03518", 31855 "text": " the <a href=\"#features-raytracing-indirecttraceray\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingIndirectTraceRays</code></a> feature <strong class=\"purple\">must</strong> be enabled" 31856 } 31857 ], 31858 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [ 31859 { 31860 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02692", 31861 "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view’s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>" 31862 } 31863 ], 31864 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [ 31865 { 31866 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-None-02693", 31867 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>" 31868 } 31869 ], 31870 "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [ 31871 { 31872 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubic-02694", 31873 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 31874 }, 31875 { 31876 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-filterCubicMinmax-02695", 31877 "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either <code>VK_SAMPLER_REDUCTION_MODE_MIN</code> or <code>VK_SAMPLER_REDUCTION_MODE_MAX</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>" 31878 } 31879 ], 31880 "(VK_NV_corner_sampled_image)": [ 31881 { 31882 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-flags-02696", 31883 "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>" 31884 } 31885 ], 31886 "(VK_VERSION_1_1)": [ 31887 { 31888 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02707", 31889 "text": " If <code>commandBuffer</code> is an unprotected command buffer, any resource accessed by the <code>VkPipeline</code> object bound to the pipeline bind point used by this command <strong class=\"purple\">must</strong> not be a protected resource" 31890 }, 31891 { 31892 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-02711", 31893 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer" 31894 } 31895 ], 31896 "(VK_EXT_shader_image_atomic_int64)": [ 31897 { 31898 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04470", 31899 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 31900 }, 31901 { 31902 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04471", 31903 "text": " If a <a href=\"#VkImageView\">VkImageView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 31904 }, 31905 { 31906 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04472", 31907 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a 64-bit channel width is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 64." 31908 }, 31909 { 31910 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-SampledType-04473", 31911 "text": " If a <a href=\"#VkBufferView\">VkBufferView</a> with a <a href=\"#VkFormat\">VkFormat</a> that has a channel width less than 64-bit is accessed as a result of this command, the <code>SampledType</code> of the <code>OpTypeImage</code> operand of that instruction <strong class=\"purple\">must</strong> have a <code>Width</code> of 32." 31912 }, 31913 { 31914 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04474", 31915 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkImage\">VkImage</a> objects created with the <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 31916 }, 31917 { 31918 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-sparseImageInt64Atomics-04475", 31919 "text": " If the <a href=\"#features-sparseImageInt64Atomics\"><code>sparseImageInt64Atomics</code></a> feature is not enabled, <a href=\"#VkBuffer\">VkBuffer</a> objects created with the <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> flag <strong class=\"purple\">must</strong> not be accessed by atomic instructions through an <code>OpTypeImage</code> with a <code>SampledType</code> with a <code>Width</code> of 64 by this command." 31920 } 31921 ], 31922 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 31923 { 31924 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-parameter", 31925 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 31926 }, 31927 { 31928 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pRaygenShaderBindingTable-parameter", 31929 "text": " <code>pRaygenShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure" 31930 }, 31931 { 31932 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pMissShaderBindingTable-parameter", 31933 "text": " <code>pMissShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure" 31934 }, 31935 { 31936 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pHitShaderBindingTable-parameter", 31937 "text": " <code>pHitShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure" 31938 }, 31939 { 31940 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-pCallableShaderBindingTable-parameter", 31941 "text": " <code>pCallableShaderBindingTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkStridedBufferRegionKHR\">VkStridedBufferRegionKHR</a> structure" 31942 }, 31943 { 31944 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-buffer-parameter", 31945 "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 31946 }, 31947 { 31948 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-recording", 31949 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 31950 }, 31951 { 31952 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commandBuffer-cmdpool", 31953 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 31954 }, 31955 { 31956 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-renderpass", 31957 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 31958 }, 31959 { 31960 "vuid": "VUID-vkCmdTraceRaysIndirectKHR-commonparent", 31961 "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 31962 } 31963 ] 31964 }, 31965 "VkTraceRaysIndirectCommandKHR": { 31966 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 31967 { 31968 "vuid": "VUID-VkTraceRaysIndirectCommandKHR-width-03519", 31969 "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]" 31970 }, 31971 { 31972 "vuid": "VUID-VkTraceRaysIndirectCommandKHR-height-03520", 31973 "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]" 31974 }, 31975 { 31976 "vuid": "VUID-VkTraceRaysIndirectCommandKHR-depth-03521", 31977 "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]" 31978 } 31979 ] 31980 }, 31981 "vkCmdBuildAccelerationStructureNV": { 31982 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 31983 { 31984 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241", 31985 "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>" 31986 }, 31987 { 31988 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488", 31989 "text": " <code>dst</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> where <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>type</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code> are identical, <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>instanceCount</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>geometryCount</code> for <code>dst</code> are greater than or equal to the build size and each geometry in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>pGeometries</code> for <code>dst</code> has greater than or equal to the number of vertices, indices, and AABBs" 31990 }, 31991 { 31992 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489", 31993 "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 31994 }, 31995 { 31996 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490", 31997 "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV</code> set in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code>" 31998 }, 31999 { 32000 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491", 32001 "text": " If <code>update</code> is <code>VK_FALSE</code>, the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>" 32002 }, 32003 { 32004 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492", 32005 "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>" 32006 }, 32007 { 32008 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-03522", 32009 "text": " <code>scratch</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag" 32010 }, 32011 { 32012 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-03523", 32013 "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_NV</code> usage flag" 32014 }, 32015 { 32016 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03524", 32017 "text": " If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>" 32018 }, 32019 { 32020 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03525", 32021 "text": " If <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>" 32022 }, 32023 { 32024 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-03526", 32025 "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>src</code> and <code>dst</code> objects <strong class=\"purple\">must</strong> either be the same object or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>" 32026 }, 32027 { 32028 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter", 32029 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 32030 }, 32031 { 32032 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter", 32033 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> structure" 32034 }, 32035 { 32036 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter", 32037 "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 32038 }, 32039 { 32040 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter", 32041 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32042 }, 32043 { 32044 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter", 32045 "text": " If <code>src</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32046 }, 32047 { 32048 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter", 32049 "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 32050 }, 32051 { 32052 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording", 32053 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 32054 }, 32055 { 32056 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool", 32057 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 32058 }, 32059 { 32060 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-renderpass", 32061 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 32062 }, 32063 { 32064 "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent", 32065 "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 32066 } 32067 ] 32068 }, 32069 "vkCmdBuildAccelerationStructureKHR": { 32070 "core": [ 32071 { 32072 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pOffsetInfos-03402", 32073 "text": " Each element of <code>ppOffsetInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildOffsetInfoKHR</code> structures" 32074 }, 32075 { 32076 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03403", 32077 "text": " Each <code>pInfos</code>[i].<code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> not refer to the same acceleration structure as any <code>pInfos</code>[i].<code>dstAccelerationStructure</code> that is provided to the same build command unless it is identical for an update" 32078 }, 32079 { 32080 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03404", 32081 "text": " For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> where <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> and <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>flags</code> are identical to <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>type</code> and <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code> respectively, <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>geometryCount</code> for <code>dstAccelerationStructure</code> are greater than or equal to the build size, and each geometry in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>ppGeometries</code> for <code>dstAccelerationStructure</code> has greater than or equal to the number of vertices, indices, and AABBs, <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> is both 0 or both non-zero, and all other parameters are the same" 32082 }, 32083 { 32084 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03405", 32085 "text": " For each <code>pInfos</code>[i], if <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active for that acceleration structure <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>" 32086 }, 32087 { 32088 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03406", 32089 "text": " For each <code>pInfos</code>[i], if <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive for that acceleration structure <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>" 32090 }, 32091 { 32092 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03407", 32093 "text": " Any acceleration structure instance in any top level build in this command <strong class=\"purple\">must</strong> not reference any bottom level acceleration structure built by this command" 32094 }, 32095 { 32096 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03408", 32097 "text": " There <strong class=\"purple\">must</strong> not be any <a href=\"#resources-memory-aliasing\">memory aliasing</a> between the scratch memories that are provided in all the <code>pInfos</code>[i].<code>scratchData</code> memories for the acceleration structure builds" 32098 }, 32099 { 32100 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03409", 32101 "text": " There <strong class=\"purple\">must</strong> not be any <a href=\"#resources-memory-aliasing\">memory aliasing</a> between memory bound to any top level, bottom level, or instance acceleration structure accessed by this command" 32102 }, 32103 { 32104 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-update-03527", 32105 "text": " If <code>update</code> is <code>VK_FALSE</code>, all addresses between <code>pInfos</code>[i].<code>scratchData</code> and <code>pInfos</code>[i].<code>scratchData</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a>::<code>accelerationStructure</code> set to <code>pInfos</code>[i].<code>dstAccelerationStructure</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_KHR</code>" 32106 }, 32107 { 32108 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-update-03528", 32109 "text": " If <code>update</code> is <code>VK_TRUE</code>, all addresses between <code>pInfos</code>[i].<code>scratchData</code> and <code>pInfos</code>[i].<code>scratchData</code> + N - 1 <strong class=\"purple\">must</strong> be in the buffer device address range of the same buffer, where N is given by the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsKHR\">vkGetAccelerationStructureMemoryRequirementsKHR</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a>::<code>accelerationStructure</code> set to <code>pInfos</code>[i].<code>dstAccelerationStructure</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoKHR\">VkAccelerationStructureMemoryRequirementsInfoKHR</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_KHR</code>" 32110 }, 32111 { 32112 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-03529", 32113 "text": " The buffer from which the buffer device address <code>pInfos</code>[i].<code>scratchData</code> is queried <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR</code> usage flag" 32114 }, 32115 { 32116 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-04046", 32117 "text": " All <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> or <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> referenced by this command <strong class=\"purple\">must</strong> contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single VkDeviceMemory object" 32118 }, 32119 { 32120 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-None-03531", 32121 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory" 32122 } 32123 ], 32124 "(VK_KHR_deferred_host_operations)": [ 32125 { 32126 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pNext-03532", 32127 "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of any of the provided <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures" 32128 } 32129 ], 32130 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32131 { 32132 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-parameter", 32133 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 32134 }, 32135 { 32136 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-pInfos-parameter", 32137 "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures" 32138 }, 32139 { 32140 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-ppOffsetInfos-parameter", 32141 "text": " <code>ppOffsetInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildOffsetInfoKHR\">VkAccelerationStructureBuildOffsetInfoKHR</a> structures" 32142 }, 32143 { 32144 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-recording", 32145 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 32146 }, 32147 { 32148 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-commandBuffer-cmdpool", 32149 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 32150 }, 32151 { 32152 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-renderpass", 32153 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 32154 }, 32155 { 32156 "vuid": "VUID-vkCmdBuildAccelerationStructureKHR-infoCount-arraylength", 32157 "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 32158 } 32159 ] 32160 }, 32161 "vkCmdBuildAccelerationStructureIndirectKHR": { 32162 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32163 { 32164 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-None-04047", 32165 "text": " All <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> or <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> referenced by this command <strong class=\"purple\">must</strong> contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single VkDeviceMemory object" 32166 }, 32167 { 32168 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-None-03534", 32169 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory" 32170 }, 32171 { 32172 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-rayTracingIndirectAccelerationStructureBuild-03535", 32173 "text": " The <a href=\"#features-raytracing-indirectasbuild\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingIndirectAccelerationStructureBuild</code></a> feature <strong class=\"purple\">must</strong> be enabled" 32174 }, 32175 { 32176 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-parameter", 32177 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 32178 }, 32179 { 32180 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-pInfo-parameter", 32181 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structure" 32182 }, 32183 { 32184 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-indirectBuffer-parameter", 32185 "text": " <code>indirectBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBuffer\">VkBuffer</a> handle" 32186 }, 32187 { 32188 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-recording", 32189 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 32190 }, 32191 { 32192 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commandBuffer-cmdpool", 32193 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 32194 }, 32195 { 32196 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-renderpass", 32197 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 32198 }, 32199 { 32200 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-commonparent", 32201 "text": " Both of <code>commandBuffer</code>, and <code>indirectBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 32202 } 32203 ], 32204 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [ 32205 { 32206 "vuid": "VUID-vkCmdBuildAccelerationStructureIndirectKHR-pNext-03536", 32207 "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of any of the provided <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures" 32208 } 32209 ] 32210 }, 32211 "VkAccelerationStructureBuildGeometryInfoKHR": { 32212 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32213 { 32214 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03537", 32215 "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 32216 }, 32217 { 32218 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03538", 32219 "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR</code> set in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code>" 32220 }, 32221 { 32222 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-03539", 32223 "text": " <code>scratchData</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR</code> usage flag" 32224 }, 32225 { 32226 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-update-03540", 32227 "text": " If <code>update</code> is <code>VK_TRUE</code>, the <code>srcAccelerationStructure</code> and <code>dstAccelerationStructure</code> objects <strong class=\"purple\">must</strong> either be the same object or not have any <a href=\"#resources-memory-aliasing\">memory aliasing</a>" 32228 }, 32229 { 32230 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-sType", 32231 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR</code>" 32232 }, 32233 { 32234 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-pNext-pNext", 32235 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a>" 32236 }, 32237 { 32238 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-sType-unique", 32239 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 32240 }, 32241 { 32242 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-type-parameter", 32243 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeKHR\">VkAccelerationStructureTypeKHR</a> value" 32244 }, 32245 { 32246 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-flags-parameter", 32247 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsKHR\">VkBuildAccelerationStructureFlagBitsKHR</a> values" 32248 }, 32249 { 32250 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-srcAccelerationStructure-parameter", 32251 "text": " If <code>srcAccelerationStructure</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32252 }, 32253 { 32254 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-dstAccelerationStructure-parameter", 32255 "text": " <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32256 }, 32257 { 32258 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-scratchData-parameter", 32259 "text": " <code>scratchData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union" 32260 }, 32261 { 32262 "vuid": "VUID-VkAccelerationStructureBuildGeometryInfoKHR-commonparent", 32263 "text": " Both of <code>dstAccelerationStructure</code>, and <code>srcAccelerationStructure</code> that are valid handles of non-ignored parameters <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 32264 } 32265 ] 32266 }, 32267 "VkAccelerationStructureGeometryKHR": { 32268 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32269 { 32270 "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03541", 32271 "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure" 32272 }, 32273 { 32274 "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03542", 32275 "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure" 32276 }, 32277 { 32278 "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-03543", 32279 "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure" 32280 }, 32281 { 32282 "vuid": "VUID-VkAccelerationStructureGeometryKHR-sType-sType", 32283 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR</code>" 32284 }, 32285 { 32286 "vuid": "VUID-VkAccelerationStructureGeometryKHR-pNext-pNext", 32287 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 32288 }, 32289 { 32290 "vuid": "VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter", 32291 "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeKHR\">VkGeometryTypeKHR</a> value" 32292 }, 32293 { 32294 "vuid": "VUID-VkAccelerationStructureGeometryKHR-triangles-parameter", 32295 "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the <code>triangles</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a> structure" 32296 }, 32297 { 32298 "vuid": "VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter", 32299 "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the <code>aabbs</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a> structure" 32300 }, 32301 { 32302 "vuid": "VUID-VkAccelerationStructureGeometryKHR-instances-parameter", 32303 "text": " If <code>geometryType</code> is <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the <code>instances</code> member of <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a> structure" 32304 }, 32305 { 32306 "vuid": "VUID-VkAccelerationStructureGeometryKHR-flags-parameter", 32307 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsKHR\">VkGeometryFlagBitsKHR</a> values" 32308 } 32309 ] 32310 }, 32311 "VkAccelerationStructureGeometryTrianglesDataKHR": { 32312 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32313 { 32314 "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-sType-sType", 32315 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR</code>" 32316 }, 32317 { 32318 "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext", 32319 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 32320 }, 32321 { 32322 "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter", 32323 "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 32324 }, 32325 { 32326 "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexData-parameter", 32327 "text": " <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union" 32328 }, 32329 { 32330 "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter", 32331 "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value" 32332 }, 32333 { 32334 "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexData-parameter", 32335 "text": " If <code>indexData</code> is not <code>0</code>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union" 32336 }, 32337 { 32338 "vuid": "VUID-VkAccelerationStructureGeometryTrianglesDataKHR-transformData-parameter", 32339 "text": " If <code>transformData</code> is not <code>0</code>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union" 32340 } 32341 ] 32342 }, 32343 "VkAccelerationStructureGeometryAabbsDataKHR": { 32344 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32345 { 32346 "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-03544", 32347 "text": " <code>data</code> <strong class=\"purple\">must</strong> be aligned to <code>8</code> bytes" 32348 }, 32349 { 32350 "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545", 32351 "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>" 32352 }, 32353 { 32354 "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-sType-sType", 32355 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR</code>" 32356 }, 32357 { 32358 "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-pNext-pNext", 32359 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 32360 }, 32361 { 32362 "vuid": "VUID-VkAccelerationStructureGeometryAabbsDataKHR-data-parameter", 32363 "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union" 32364 } 32365 ] 32366 }, 32367 "VkAabbPositionsKHR": { 32368 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32369 { 32370 "vuid": "VUID-VkAabbPositionsKHR-minX-03546", 32371 "text": " <code>minX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxX</code>" 32372 }, 32373 { 32374 "vuid": "VUID-VkAabbPositionsKHR-minY-03547", 32375 "text": " <code>minY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxY</code>" 32376 }, 32377 { 32378 "vuid": "VUID-VkAabbPositionsKHR-minZ-03548", 32379 "text": " <code>minZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>maxZ</code>" 32380 } 32381 ] 32382 }, 32383 "VkAccelerationStructureGeometryInstancesDataKHR": { 32384 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32385 { 32386 "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-03549", 32387 "text": " <code>data</code> <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes" 32388 }, 32389 { 32390 "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-arrayOfPointers-03550", 32391 "text": " If <code>arrayOfPointers</code> is true, each pointer <strong class=\"purple\">must</strong> be aligned to <code>16</code> bytes" 32392 }, 32393 { 32394 "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType", 32395 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR</code>" 32396 }, 32397 { 32398 "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext", 32399 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 32400 }, 32401 { 32402 "vuid": "VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-parameter", 32403 "text": " <code>data</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union" 32404 } 32405 ] 32406 }, 32407 "VkAccelerationStructureInstanceKHR": { 32408 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32409 { 32410 "vuid": "VUID-VkAccelerationStructureInstanceKHR-flags-parameter", 32411 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryInstanceFlagBitsKHR\">VkGeometryInstanceFlagBitsKHR</a> values" 32412 } 32413 ] 32414 }, 32415 "VkAccelerationStructureBuildOffsetInfoKHR": { 32416 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32417 { 32418 "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03551", 32419 "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry uses indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexData</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>indexType</code>" 32420 }, 32421 { 32422 "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03552", 32423 "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, if the geometry doesn’t use indices, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexData</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>vertexFormat</code>" 32424 }, 32425 { 32426 "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-transformOffset-03553", 32427 "text": " For geometries of type <code>VK_GEOMETRY_TYPE_TRIANGLES_KHR</code>, the offset <code>transformOffset</code> from <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> <strong class=\"purple\">must</strong> be a multiple of 16" 32428 }, 32429 { 32430 "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03554", 32431 "text": " For geometries of type <code>VK_GEOMETRY_TYPE_AABBS_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryAabbsDataKHR\">VkAccelerationStructureGeometryAabbsDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 8" 32432 }, 32433 { 32434 "vuid": "VUID-VkAccelerationStructureBuildOffsetInfoKHR-primitiveOffset-03555", 32435 "text": " For geometries of type <code>VK_GEOMETRY_TYPE_INSTANCES_KHR</code>, the offset <code>primitiveOffset</code> from <a href=\"#VkAccelerationStructureGeometryInstancesDataKHR\">VkAccelerationStructureGeometryInstancesDataKHR</a>::<code>data</code> <strong class=\"purple\">must</strong> be a multiple of 16 // TODO - Almost certainly should be more here" 32436 } 32437 ] 32438 }, 32439 "vkCmdWriteAccelerationStructuresPropertiesKHR": { 32440 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32441 { 32442 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02493", 32443 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>" 32444 }, 32445 { 32446 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-02494", 32447 "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>" 32448 }, 32449 { 32450 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-parameter", 32451 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 32452 }, 32453 { 32454 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter", 32455 "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles" 32456 }, 32457 { 32458 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-parameter", 32459 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value" 32460 }, 32461 { 32462 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryPool-parameter", 32463 "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryPool\">VkQueryPool</a> handle" 32464 }, 32465 { 32466 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-recording", 32467 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 32468 }, 32469 { 32470 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commandBuffer-cmdpool", 32471 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 32472 }, 32473 { 32474 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-renderpass", 32475 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 32476 }, 32477 { 32478 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength", 32479 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 32480 }, 32481 { 32482 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-commonparent", 32483 "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 32484 } 32485 ], 32486 "core": [ 32487 { 32488 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431", 32489 "text": " All acceleration structures in <code>accelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>" 32490 }, 32491 { 32492 "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-queryType-03432", 32493 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>" 32494 } 32495 ] 32496 }, 32497 "vkCmdCopyAccelerationStructureNV": { 32498 "core": [ 32499 { 32500 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-03410", 32501 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>" 32502 }, 32503 { 32504 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-03411", 32505 "text": " <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>" 32506 } 32507 ], 32508 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_NV_ray_tracing)": [ 32509 { 32510 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter", 32511 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 32512 }, 32513 { 32514 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter", 32515 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32516 }, 32517 { 32518 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter", 32519 "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32520 }, 32521 { 32522 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter", 32523 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value" 32524 }, 32525 { 32526 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording", 32527 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 32528 }, 32529 { 32530 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool", 32531 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 32532 }, 32533 { 32534 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-renderpass", 32535 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 32536 }, 32537 { 32538 "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent", 32539 "text": " Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 32540 } 32541 ] 32542 }, 32543 "vkCmdCopyAccelerationStructureKHR": { 32544 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32545 { 32546 "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-None-03556", 32547 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory" 32548 }, 32549 { 32550 "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-parameter", 32551 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 32552 }, 32553 { 32554 "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pInfo-parameter", 32555 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure" 32556 }, 32557 { 32558 "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-recording", 32559 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 32560 }, 32561 { 32562 "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-commandBuffer-cmdpool", 32563 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 32564 }, 32565 { 32566 "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-renderpass", 32567 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 32568 } 32569 ], 32570 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [ 32571 { 32572 "vuid": "VUID-vkCmdCopyAccelerationStructureKHR-pNext-03557", 32573 "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of the <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure" 32574 } 32575 ] 32576 }, 32577 "VkCopyAccelerationStructureInfoKHR": { 32578 "core": [ 32579 { 32580 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-03410", 32581 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR</code>" 32582 }, 32583 { 32584 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-03411", 32585 "text": " <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR</code>" 32586 } 32587 ], 32588 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_ray_tracing)": [ 32589 { 32590 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-sType", 32591 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR</code>" 32592 }, 32593 { 32594 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-pNext-pNext", 32595 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a>" 32596 }, 32597 { 32598 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-sType-unique", 32599 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 32600 }, 32601 { 32602 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-src-parameter", 32603 "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32604 }, 32605 { 32606 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-dst-parameter", 32607 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32608 }, 32609 { 32610 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-mode-parameter", 32611 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value" 32612 }, 32613 { 32614 "vuid": "VUID-VkCopyAccelerationStructureInfoKHR-commonparent", 32615 "text": " Both of <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <a href=\"#VkDevice\">VkDevice</a>" 32616 } 32617 ] 32618 }, 32619 "vkCmdCopyAccelerationStructureToMemoryKHR": { 32620 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32621 { 32622 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-04048", 32623 "text": " All <code>VkDeviceOrHostAddressConstKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single VkDeviceMemory object" 32624 }, 32625 { 32626 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-None-03559", 32627 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory" 32628 }, 32629 { 32630 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-parameter", 32631 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 32632 }, 32633 { 32634 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pInfo-parameter", 32635 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure" 32636 }, 32637 { 32638 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-recording", 32639 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 32640 }, 32641 { 32642 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-commandBuffer-cmdpool", 32643 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 32644 }, 32645 { 32646 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-renderpass", 32647 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 32648 } 32649 ], 32650 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [ 32651 { 32652 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-pNext-03560", 32653 "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of the <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure" 32654 } 32655 ], 32656 "core": [ 32657 { 32658 "vuid": "VUID-vkCmdCopyAccelerationStructureToMemoryKHR-mode-03412", 32659 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>" 32660 } 32661 ] 32662 }, 32663 "VkCopyAccelerationStructureToMemoryInfoKHR": { 32664 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32665 { 32666 "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-03561", 32667 "text": " The memory pointed to by <code>dst</code> <strong class=\"purple\">must</strong> be at least as large as the serialization size of <code>src</code>, as reported by <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>" 32668 }, 32669 { 32670 "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-sType", 32671 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR</code>" 32672 }, 32673 { 32674 "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-pNext-pNext", 32675 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a>" 32676 }, 32677 { 32678 "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-sType-unique", 32679 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 32680 }, 32681 { 32682 "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-src-parameter", 32683 "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32684 }, 32685 { 32686 "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-dst-parameter", 32687 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> union" 32688 }, 32689 { 32690 "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-parameter", 32691 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value" 32692 } 32693 ], 32694 "core": [ 32695 { 32696 "vuid": "VUID-VkCopyAccelerationStructureToMemoryInfoKHR-mode-03412", 32697 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR</code>" 32698 } 32699 ] 32700 }, 32701 "vkCmdCopyMemoryToAccelerationStructureKHR": { 32702 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32703 { 32704 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-None-04049", 32705 "text": " All <code>VkDeviceOrHostAddressKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid device addresses for a buffer bound to device memory. If the buffer is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single VkDeviceMemory object" 32706 }, 32707 { 32708 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-None-03563", 32709 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to device memory" 32710 }, 32711 { 32712 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-parameter", 32713 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 32714 }, 32715 { 32716 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-parameter", 32717 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure" 32718 }, 32719 { 32720 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-recording", 32721 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 32722 }, 32723 { 32724 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-commandBuffer-cmdpool", 32725 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations" 32726 }, 32727 { 32728 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-renderpass", 32729 "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance" 32730 } 32731 ], 32732 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)+(VK_KHR_deferred_host_operations)": [ 32733 { 32734 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pNext-03564", 32735 "text": " The <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a> structure <strong class=\"purple\">must</strong> not be included in the <code>pNext</code> chain of the <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure" 32736 } 32737 ], 32738 "core": [ 32739 { 32740 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-mode-03413", 32741 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>" 32742 }, 32743 { 32744 "vuid": "VUID-vkCmdCopyMemoryToAccelerationStructureKHR-pInfo-03414", 32745 "text": " The data in <code>pInfo->src</code> <strong class=\"purple\">must</strong> have a format compatible with the destination physical device as returned by <a href=\"#vkGetDeviceAccelerationStructureCompatibilityKHR\">vkGetDeviceAccelerationStructureCompatibilityKHR</a>" 32746 } 32747 ] 32748 }, 32749 "VkCopyMemoryToAccelerationStructureInfoKHR": { 32750 "core": [ 32751 { 32752 "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-03413", 32753 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR</code>" 32754 }, 32755 { 32756 "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pInfo-03414", 32757 "text": " The data in <code>pInfo->src</code> <strong class=\"purple\">must</strong> have a format compatible with the destination physical device as returned by <a href=\"#vkGetDeviceAccelerationStructureCompatibilityKHR\">vkGetDeviceAccelerationStructureCompatibilityKHR</a>" 32758 } 32759 ], 32760 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32761 { 32762 "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-sType", 32763 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR</code>" 32764 }, 32765 { 32766 "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-pNext-pNext", 32767 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeferredOperationInfoKHR\">VkDeferredOperationInfoKHR</a>" 32768 }, 32769 { 32770 "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-sType-unique", 32771 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 32772 }, 32773 { 32774 "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-src-parameter", 32775 "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> union" 32776 }, 32777 { 32778 "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-dst-parameter", 32779 "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handle" 32780 }, 32781 { 32782 "vuid": "VUID-VkCopyMemoryToAccelerationStructureInfoKHR-mode-parameter", 32783 "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeKHR\">VkCopyAccelerationStructureModeKHR</a> value" 32784 } 32785 ] 32786 }, 32787 "vkGetDeviceAccelerationStructureCompatibilityKHR": { 32788 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32789 { 32790 "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-rayTracing-03565", 32791 "text": " The <a href=\"#features-raytracing\"><code>rayTracing</code></a> or <a href=\"#features-rayQuery\"><code>rayQuery</code></a> feature <strong class=\"purple\">must</strong> be enabled" 32792 }, 32793 { 32794 "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-device-parameter", 32795 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 32796 }, 32797 { 32798 "vuid": "VUID-vkGetDeviceAccelerationStructureCompatibilityKHR-version-parameter", 32799 "text": " <code>version</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAccelerationStructureVersionKHR\">VkAccelerationStructureVersionKHR</a> structure" 32800 } 32801 ] 32802 }, 32803 "VkAccelerationStructureVersionKHR": { 32804 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32805 { 32806 "vuid": "VUID-VkAccelerationStructureVersionKHR-sType-sType", 32807 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_KHR</code>" 32808 }, 32809 { 32810 "vuid": "VUID-VkAccelerationStructureVersionKHR-pNext-pNext", 32811 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 32812 }, 32813 { 32814 "vuid": "VUID-VkAccelerationStructureVersionKHR-versionData-parameter", 32815 "text": " <code>versionData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>2</code>*VK_UUID_SIZE <code>uint8_t</code> values" 32816 } 32817 ] 32818 }, 32819 "vkBuildAccelerationStructureKHR": { 32820 "core": [ 32821 { 32822 "vuid": "VUID-vkBuildAccelerationStructureKHR-pOffsetInfos-03402", 32823 "text": " Each element of <code>ppOffsetInfos</code>[i] <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfos</code>[i].<code>geometryCount</code> <code>VkAccelerationStructureBuildOffsetInfoKHR</code> structures" 32824 }, 32825 { 32826 "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03403", 32827 "text": " Each <code>pInfos</code>[i].<code>srcAccelerationStructure</code> <strong class=\"purple\">must</strong> not refer to the same acceleration structure as any <code>pInfos</code>[i].<code>dstAccelerationStructure</code> that is provided to the same build command unless it is identical for an update" 32828 }, 32829 { 32830 "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03404", 32831 "text": " For each <code>pInfos</code>[i], <code>dstAccelerationStructure</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a> where <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>type</code> and <a href=\"#VkAccelerationStructureCreateInfoKHR\">VkAccelerationStructureCreateInfoKHR</a>::<code>flags</code> are identical to <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>type</code> and <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>flags</code> respectively, <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>geometryCount</code> for <code>dstAccelerationStructure</code> are greater than or equal to the build size, and each geometry in <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a>::<code>ppGeometries</code> for <code>dstAccelerationStructure</code> has greater than or equal to the number of vertices, indices, and AABBs, <a href=\"#VkAccelerationStructureGeometryTrianglesDataKHR\">VkAccelerationStructureGeometryTrianglesDataKHR</a>::<code>transformData</code> is both 0 or both non-zero, and all other parameters are the same" 32832 }, 32833 { 32834 "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03405", 32835 "text": " For each <code>pInfos</code>[i], if <code>update</code> is <code>VK_TRUE</code>, then objects that were previously active for that acceleration structure <strong class=\"purple\">must</strong> not be made inactive as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>" 32836 }, 32837 { 32838 "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03406", 32839 "text": " For each <code>pInfos</code>[i], if <code>update</code> is <code>VK_TRUE</code>, then objects that were previously inactive for that acceleration structure <strong class=\"purple\">must</strong> not be made active as per <a href=\"#acceleration-structure-inactive-prims\">Inactive Primitives and Instances</a>" 32840 }, 32841 { 32842 "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03407", 32843 "text": " Any acceleration structure instance in any top level build in this command <strong class=\"purple\">must</strong> not reference any bottom level acceleration structure built by this command" 32844 }, 32845 { 32846 "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-03408", 32847 "text": " There <strong class=\"purple\">must</strong> not be any <a href=\"#resources-memory-aliasing\">memory aliasing</a> between the scratch memories that are provided in all the <code>pInfos</code>[i].<code>scratchData</code> memories for the acceleration structure builds" 32848 }, 32849 { 32850 "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03409", 32851 "text": " There <strong class=\"purple\">must</strong> not be any <a href=\"#resources-memory-aliasing\">memory aliasing</a> between memory bound to any top level, bottom level, or instance acceleration structure accessed by this command" 32852 }, 32853 { 32854 "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03437", 32855 "text": " All <a href=\"#VkDeviceOrHostAddressKHR\">VkDeviceOrHostAddressKHR</a> or <a href=\"#VkDeviceOrHostAddressConstKHR\">VkDeviceOrHostAddressConstKHR</a> referenced by this command <strong class=\"purple\">must</strong> contain valid host addresses" 32856 }, 32857 { 32858 "vuid": "VUID-vkBuildAccelerationStructureKHR-None-03438", 32859 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory" 32860 }, 32861 { 32862 "vuid": "VUID-vkBuildAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03439", 32863 "text": " The <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 32864 } 32865 ], 32866 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32867 { 32868 "vuid": "VUID-vkBuildAccelerationStructureKHR-device-parameter", 32869 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 32870 }, 32871 { 32872 "vuid": "VUID-vkBuildAccelerationStructureKHR-pInfos-parameter", 32873 "text": " <code>pInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> valid <a href=\"#VkAccelerationStructureBuildGeometryInfoKHR\">VkAccelerationStructureBuildGeometryInfoKHR</a> structures" 32874 }, 32875 { 32876 "vuid": "VUID-vkBuildAccelerationStructureKHR-ppOffsetInfos-parameter", 32877 "text": " <code>ppOffsetInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>infoCount</code> <a href=\"#VkAccelerationStructureBuildOffsetInfoKHR\">VkAccelerationStructureBuildOffsetInfoKHR</a> structures" 32878 }, 32879 { 32880 "vuid": "VUID-vkBuildAccelerationStructureKHR-infoCount-arraylength", 32881 "text": " <code>infoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 32882 } 32883 ] 32884 }, 32885 "vkCopyAccelerationStructureKHR": { 32886 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32887 { 32888 "vuid": "VUID-vkCopyAccelerationStructureKHR-None-03440", 32889 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory" 32890 }, 32891 { 32892 "vuid": "VUID-vkCopyAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03441", 32893 "text": " the <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 32894 }, 32895 { 32896 "vuid": "VUID-vkCopyAccelerationStructureKHR-device-parameter", 32897 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 32898 }, 32899 { 32900 "vuid": "VUID-vkCopyAccelerationStructureKHR-pInfo-parameter", 32901 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureInfoKHR\">VkCopyAccelerationStructureInfoKHR</a> structure" 32902 } 32903 ] 32904 }, 32905 "vkCopyMemoryToAccelerationStructureKHR": { 32906 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32907 { 32908 "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-None-03442", 32909 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory" 32910 }, 32911 { 32912 "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-None-03443", 32913 "text": " All <code>VkDeviceOrHostAddressConstKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid host pointers" 32914 }, 32915 { 32916 "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-rayTracingHostAccelerationStructureCommands-03444", 32917 "text": " the <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 32918 }, 32919 { 32920 "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-device-parameter", 32921 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 32922 }, 32923 { 32924 "vuid": "VUID-vkCopyMemoryToAccelerationStructureKHR-pInfo-parameter", 32925 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyMemoryToAccelerationStructureInfoKHR\">VkCopyMemoryToAccelerationStructureInfoKHR</a> structure" 32926 } 32927 ] 32928 }, 32929 "vkCopyAccelerationStructureToMemoryKHR": { 32930 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32931 { 32932 "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-None-03445", 32933 "text": " All <code>VkAccelerationStructureKHR</code> objects referenced by this command <strong class=\"purple\">must</strong> be bound to host-visible memory" 32934 }, 32935 { 32936 "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-None-03446", 32937 "text": " All <code>VkDeviceOrHostAddressKHR</code> referenced by this command <strong class=\"purple\">must</strong> contain valid host pointers" 32938 }, 32939 { 32940 "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-rayTracingHostAccelerationStructureCommands-03447", 32941 "text": " the <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 32942 }, 32943 { 32944 "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-device-parameter", 32945 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 32946 }, 32947 { 32948 "vuid": "VUID-vkCopyAccelerationStructureToMemoryKHR-pInfo-parameter", 32949 "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkCopyAccelerationStructureToMemoryInfoKHR\">VkCopyAccelerationStructureToMemoryInfoKHR</a> structure" 32950 } 32951 ] 32952 }, 32953 "vkWriteAccelerationStructuresPropertiesKHR": { 32954 "(VK_NV_ray_tracing,VK_KHR_ray_tracing)": [ 32955 { 32956 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03448", 32957 "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <code>VkDeviceSize</code>" 32958 }, 32959 { 32960 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03449", 32961 "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>, then <code>data</code> <strong class=\"purple\">must</strong> point to a <code>VkDeviceSize</code>" 32962 }, 32963 { 32964 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03450", 32965 "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of the size of <code>VkDeviceSize</code>" 32966 }, 32967 { 32968 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03451", 32969 "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>, then <code>data</code> <strong class=\"purple\">must</strong> point to a <code>VkDeviceSize</code>" 32970 }, 32971 { 32972 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-03452", 32973 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than or equal to <span class=\"eq\"><code>accelerationStructureCount</code>*<code>stride</code></span>" 32974 }, 32975 { 32976 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-03453", 32977 "text": " The acceleration structures referenced by <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be bound to host-visible memory" 32978 }, 32979 { 32980 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-device-parameter", 32981 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 32982 }, 32983 { 32984 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parameter", 32985 "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <a href=\"#VkAccelerationStructureKHR\">VkAccelerationStructureKHR</a> handles" 32986 }, 32987 { 32988 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-parameter", 32989 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value" 32990 }, 32991 { 32992 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pData-parameter", 32993 "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes" 32994 }, 32995 { 32996 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength", 32997 "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 32998 }, 32999 { 33000 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-dataSize-arraylength", 33001 "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 33002 }, 33003 { 33004 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-pAccelerationStructures-parent", 33005 "text": " Each element of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>" 33006 } 33007 ], 33008 "core": [ 33009 { 33010 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-accelerationStructures-03431", 33011 "text": " All acceleration structures in <code>accelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code>" 33012 }, 33013 { 33014 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-queryType-03432", 33015 "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR</code> or <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR</code>" 33016 }, 33017 { 33018 "vuid": "VUID-vkWriteAccelerationStructuresPropertiesKHR-rayTracingHostAccelerationStructureCommands-03454", 33019 "text": " the <a href=\"#features-raytracing-hostascmds\"><code>VkPhysicalDeviceRayTracingFeaturesKHR</code>::<code>rayTracingHostAccelerationStructureCommands</code></a> feature <strong class=\"purple\">must</strong> be enabled" 33020 } 33021 ] 33022 }, 33023 "vkEnumerateInstanceLayerProperties": { 33024 "core": [ 33025 { 33026 "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter", 33027 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 33028 }, 33029 { 33030 "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter", 33031 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkLayerProperties\">VkLayerProperties</a> structures" 33032 } 33033 ] 33034 }, 33035 "vkEnumerateDeviceLayerProperties": { 33036 "core": [ 33037 { 33038 "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter", 33039 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 33040 }, 33041 { 33042 "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter", 33043 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 33044 }, 33045 { 33046 "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter", 33047 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkLayerProperties\">VkLayerProperties</a> structures" 33048 } 33049 ] 33050 }, 33051 "vkEnumerateInstanceExtensionProperties": { 33052 "core": [ 33053 { 33054 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter", 33055 "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 33056 }, 33057 { 33058 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter", 33059 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 33060 }, 33061 { 33062 "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter", 33063 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkExtensionProperties\">VkExtensionProperties</a> structures" 33064 } 33065 ] 33066 }, 33067 "vkEnumerateDeviceExtensionProperties": { 33068 "core": [ 33069 { 33070 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter", 33071 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 33072 }, 33073 { 33074 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter", 33075 "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 33076 }, 33077 { 33078 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter", 33079 "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 33080 }, 33081 { 33082 "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter", 33083 "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <a href=\"#VkExtensionProperties\">VkExtensionProperties</a> structures" 33084 } 33085 ] 33086 }, 33087 "vkGetPhysicalDeviceFeatures": { 33088 "core": [ 33089 { 33090 "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter", 33091 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 33092 }, 33093 { 33094 "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter", 33095 "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceFeatures\">VkPhysicalDeviceFeatures</a> structure" 33096 } 33097 ] 33098 }, 33099 "vkGetPhysicalDeviceFeatures2": { 33100 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 33101 { 33102 "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter", 33103 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 33104 }, 33105 { 33106 "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter", 33107 "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure" 33108 } 33109 ] 33110 }, 33111 "VkPhysicalDeviceFeatures2": { 33112 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 33113 { 33114 "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType", 33115 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>" 33116 } 33117 ] 33118 }, 33119 "VkPhysicalDeviceVulkan11Features": { 33120 "(VK_VERSION_1_2)": [ 33121 { 33122 "vuid": "VUID-VkPhysicalDeviceVulkan11Features-sType-sType", 33123 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES</code>" 33124 } 33125 ] 33126 }, 33127 "VkPhysicalDeviceVulkan12Features": { 33128 "(VK_VERSION_1_2)": [ 33129 { 33130 "vuid": "VUID-VkPhysicalDeviceVulkan12Features-sType-sType", 33131 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES</code>" 33132 } 33133 ] 33134 }, 33135 "VkPhysicalDeviceVariablePointersFeatures": { 33136 "(VK_VERSION_1_1,VK_KHR_variable_pointers)": [ 33137 { 33138 "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-variablePointers-01431", 33139 "text": " If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled" 33140 }, 33141 { 33142 "vuid": "VUID-VkPhysicalDeviceVariablePointersFeatures-sType-sType", 33143 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES</code>" 33144 } 33145 ] 33146 }, 33147 "VkPhysicalDeviceMultiviewFeatures": { 33148 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 33149 { 33150 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580", 33151 "text": " If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled" 33152 }, 33153 { 33154 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581", 33155 "text": " If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled" 33156 }, 33157 { 33158 "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType", 33159 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>" 33160 } 33161 ] 33162 }, 33163 "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT": { 33164 "(VK_EXT_shader_atomic_float)": [ 33165 { 33166 "vuid": "VUID-VkPhysicalDeviceShaderAtomicFloatFeaturesEXT-sType-sType", 33167 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT</code>" 33168 } 33169 ] 33170 }, 33171 "VkPhysicalDeviceShaderAtomicInt64Features": { 33172 "(VK_VERSION_1_2,VK_KHR_shader_atomic_int64)": [ 33173 { 33174 "vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64Features-sType-sType", 33175 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES</code>" 33176 } 33177 ] 33178 }, 33179 "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT": { 33180 "(VK_EXT_shader_image_atomic_int64)": [ 33181 { 33182 "vuid": "VUID-VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT-sType-sType", 33183 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT</code>" 33184 } 33185 ] 33186 }, 33187 "VkPhysicalDevice8BitStorageFeatures": { 33188 "(VK_VERSION_1_2,VK_KHR_8bit_storage)": [ 33189 { 33190 "vuid": "VUID-VkPhysicalDevice8BitStorageFeatures-sType-sType", 33191 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES</code>" 33192 } 33193 ] 33194 }, 33195 "VkPhysicalDevice16BitStorageFeatures": { 33196 "(VK_VERSION_1_1,VK_KHR_16bit_storage)": [ 33197 { 33198 "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType", 33199 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>" 33200 } 33201 ] 33202 }, 33203 "VkPhysicalDeviceShaderFloat16Int8Features": { 33204 "(VK_VERSION_1_2,VK_KHR_shader_float16_int8)": [ 33205 { 33206 "vuid": "VUID-VkPhysicalDeviceShaderFloat16Int8Features-sType-sType", 33207 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES</code>" 33208 } 33209 ] 33210 }, 33211 "VkPhysicalDeviceShaderClockFeaturesKHR": { 33212 "(VK_KHR_shader_clock)": [ 33213 { 33214 "vuid": "VUID-VkPhysicalDeviceShaderClockFeaturesKHR-sType-sType", 33215 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR</code>" 33216 } 33217 ] 33218 }, 33219 "VkPhysicalDeviceSamplerYcbcrConversionFeatures": { 33220 "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 33221 { 33222 "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType", 33223 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>" 33224 } 33225 ] 33226 }, 33227 "VkPhysicalDeviceProtectedMemoryFeatures": { 33228 "(VK_VERSION_1_1)": [ 33229 { 33230 "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType", 33231 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>" 33232 } 33233 ] 33234 }, 33235 "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": { 33236 "(VK_EXT_blend_operation_advanced)": [ 33237 { 33238 "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType", 33239 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>" 33240 } 33241 ] 33242 }, 33243 "VkPhysicalDeviceConditionalRenderingFeaturesEXT": { 33244 "(VK_EXT_conditional_rendering)": [ 33245 { 33246 "vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType", 33247 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT</code>" 33248 } 33249 ] 33250 }, 33251 "VkPhysicalDeviceShaderDrawParametersFeatures": { 33252 "(VK_VERSION_1_1)": [ 33253 { 33254 "vuid": "VUID-VkPhysicalDeviceShaderDrawParametersFeatures-sType-sType", 33255 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES</code>" 33256 } 33257 ] 33258 }, 33259 "VkPhysicalDeviceMeshShaderFeaturesNV": { 33260 "(VK_NV_mesh_shader)": [ 33261 { 33262 "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType", 33263 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV</code>" 33264 } 33265 ] 33266 }, 33267 "VkPhysicalDeviceDescriptorIndexingFeatures": { 33268 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 33269 { 33270 "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeatures-sType-sType", 33271 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES</code>" 33272 } 33273 ] 33274 }, 33275 "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": { 33276 "(VK_EXT_vertex_attribute_divisor)": [ 33277 { 33278 "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType", 33279 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT</code>" 33280 } 33281 ] 33282 }, 33283 "VkPhysicalDeviceASTCDecodeFeaturesEXT": { 33284 "(VK_EXT_astc_decode_mode)": [ 33285 { 33286 "vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType", 33287 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT</code>" 33288 } 33289 ] 33290 }, 33291 "VkPhysicalDeviceTransformFeedbackFeaturesEXT": { 33292 "(VK_EXT_transform_feedback)": [ 33293 { 33294 "vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType", 33295 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT</code>" 33296 } 33297 ] 33298 }, 33299 "VkPhysicalDeviceVulkanMemoryModelFeatures": { 33300 "(VK_VERSION_1_2,VK_KHR_vulkan_memory_model)": [ 33301 { 33302 "vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeatures-sType-sType", 33303 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES</code>" 33304 } 33305 ] 33306 }, 33307 "VkPhysicalDeviceInlineUniformBlockFeaturesEXT": { 33308 "(VK_EXT_inline_uniform_block)": [ 33309 { 33310 "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeaturesEXT-sType-sType", 33311 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT</code>" 33312 } 33313 ] 33314 }, 33315 "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": { 33316 "(VK_NV_representative_fragment_test)": [ 33317 { 33318 "vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType", 33319 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV</code>" 33320 } 33321 ] 33322 }, 33323 "VkPhysicalDeviceExclusiveScissorFeaturesNV": { 33324 "(VK_NV_scissor_exclusive)": [ 33325 { 33326 "vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType", 33327 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV</code>" 33328 } 33329 ] 33330 }, 33331 "VkPhysicalDeviceCornerSampledImageFeaturesNV": { 33332 "(VK_NV_corner_sampled_image)": [ 33333 { 33334 "vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType", 33335 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV</code>" 33336 } 33337 ] 33338 }, 33339 "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": { 33340 "(VK_NV_compute_shader_derivatives)": [ 33341 { 33342 "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType", 33343 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV</code>" 33344 } 33345 ] 33346 }, 33347 "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV": { 33348 "(VK_NV_fragment_shader_barycentric)": [ 33349 { 33350 "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV-sType-sType", 33351 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV</code>" 33352 } 33353 ] 33354 }, 33355 "VkPhysicalDeviceShaderImageFootprintFeaturesNV": { 33356 "(VK_NV_shader_image_footprint)": [ 33357 { 33358 "vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType", 33359 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV</code>" 33360 } 33361 ] 33362 }, 33363 "VkPhysicalDeviceShadingRateImageFeaturesNV": { 33364 "(VK_NV_shading_rate_image)": [ 33365 { 33366 "vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType", 33367 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV</code>" 33368 } 33369 ] 33370 }, 33371 "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": { 33372 "(VK_EXT_fragment_density_map)": [ 33373 { 33374 "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType", 33375 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT</code>" 33376 } 33377 ] 33378 }, 33379 "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT": { 33380 "(VK_EXT_fragment_density_map2)": [ 33381 { 33382 "vuid": "VUID-VkPhysicalDeviceFragmentDensityMap2FeaturesEXT-sType-sType", 33383 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT</code>" 33384 } 33385 ] 33386 }, 33387 "VkPhysicalDeviceScalarBlockLayoutFeatures": { 33388 "(VK_VERSION_1_2,VK_EXT_scalar_block_layout)": [ 33389 { 33390 "vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeatures-sType-sType", 33391 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES</code>" 33392 } 33393 ] 33394 }, 33395 "VkPhysicalDeviceUniformBufferStandardLayoutFeatures": { 33396 "(VK_VERSION_1_2,VK_KHR_uniform_buffer_standard_layout)": [ 33397 { 33398 "vuid": "VUID-VkPhysicalDeviceUniformBufferStandardLayoutFeatures-sType-sType", 33399 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES</code>" 33400 } 33401 ] 33402 }, 33403 "VkPhysicalDeviceDepthClipEnableFeaturesEXT": { 33404 "(VK_EXT_depth_clip_enable)": [ 33405 { 33406 "vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType", 33407 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT</code>" 33408 } 33409 ] 33410 }, 33411 "VkPhysicalDeviceMemoryPriorityFeaturesEXT": { 33412 "(VK_EXT_memory_priority)": [ 33413 { 33414 "vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType", 33415 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT</code>" 33416 } 33417 ] 33418 }, 33419 "VkPhysicalDeviceBufferDeviceAddressFeatures": { 33420 "(VK_VERSION_1_2,VK_KHR_buffer_device_address)": [ 33421 { 33422 "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeatures-sType-sType", 33423 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES</code>" 33424 } 33425 ] 33426 }, 33427 "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT": { 33428 "(VK_EXT_buffer_device_address)": [ 33429 { 33430 "vuid": "VUID-VkPhysicalDeviceBufferDeviceAddressFeaturesEXT-sType-sType", 33431 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT</code>" 33432 } 33433 ] 33434 }, 33435 "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": { 33436 "(VK_NV_dedicated_allocation_image_aliasing)": [ 33437 { 33438 "vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType", 33439 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV</code>" 33440 } 33441 ] 33442 }, 33443 "VkPhysicalDeviceImagelessFramebufferFeatures": { 33444 "(VK_VERSION_1_2,VK_KHR_imageless_framebuffer)": [ 33445 { 33446 "vuid": "VUID-VkPhysicalDeviceImagelessFramebufferFeatures-sType-sType", 33447 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES</code>" 33448 } 33449 ] 33450 }, 33451 "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT": { 33452 "(VK_EXT_fragment_shader_interlock)": [ 33453 { 33454 "vuid": "VUID-VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT-sType-sType", 33455 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT</code>" 33456 } 33457 ] 33458 }, 33459 "VkPhysicalDeviceCooperativeMatrixFeaturesNV": { 33460 "(VK_NV_cooperative_matrix)": [ 33461 { 33462 "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType", 33463 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV</code>" 33464 } 33465 ] 33466 }, 33467 "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": { 33468 "(VK_EXT_ycbcr_image_arrays)": [ 33469 { 33470 "vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType", 33471 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT</code>" 33472 } 33473 ] 33474 }, 33475 "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures": { 33476 "(VK_VERSION_1_1)+(VK_VERSION_1_2,VK_KHR_shader_subgroup_extended_types)": [ 33477 { 33478 "vuid": "VUID-VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures-sType-sType", 33479 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES</code>" 33480 } 33481 ] 33482 }, 33483 "VkPhysicalDeviceHostQueryResetFeatures": { 33484 "(VK_VERSION_1_2,VK_EXT_host_query_reset)": [ 33485 { 33486 "vuid": "VUID-VkPhysicalDeviceHostQueryResetFeatures-sType-sType", 33487 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES</code>" 33488 } 33489 ] 33490 }, 33491 "VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL": { 33492 "(VK_INTEL_shader_integer_functions2)": [ 33493 { 33494 "vuid": "VUID-VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL-sType-sType", 33495 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL</code>" 33496 } 33497 ] 33498 }, 33499 "VkPhysicalDeviceCoverageReductionModeFeaturesNV": { 33500 "(VK_NV_coverage_reduction_mode)": [ 33501 { 33502 "vuid": "VUID-VkPhysicalDeviceCoverageReductionModeFeaturesNV-sType-sType", 33503 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV</code>" 33504 } 33505 ] 33506 }, 33507 "VkPhysicalDeviceTimelineSemaphoreFeatures": { 33508 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 33509 { 33510 "vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreFeatures-sType-sType", 33511 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES</code>" 33512 } 33513 ] 33514 }, 33515 "VkPhysicalDeviceIndexTypeUint8FeaturesEXT": { 33516 "(VK_EXT_index_type_uint8)": [ 33517 { 33518 "vuid": "VUID-VkPhysicalDeviceIndexTypeUint8FeaturesEXT-sType-sType", 33519 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT</code>" 33520 } 33521 ] 33522 }, 33523 "VkPhysicalDeviceShaderSMBuiltinsFeaturesNV": { 33524 "(VK_NV_shader_sm_builtins)": [ 33525 { 33526 "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsFeaturesNV-sType-sType", 33527 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV</code>" 33528 } 33529 ] 33530 }, 33531 "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures": { 33532 "(VK_VERSION_1_2,VK_KHR_separate_depth_stencil_layouts)": [ 33533 { 33534 "vuid": "VUID-VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures-sType-sType", 33535 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES</code>" 33536 } 33537 ] 33538 }, 33539 "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR": { 33540 "(VK_KHR_pipeline_executable_properties)": [ 33541 { 33542 "vuid": "VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType", 33543 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR</code>" 33544 } 33545 ] 33546 }, 33547 "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT": { 33548 "(VK_EXT_shader_demote_to_helper_invocation)": [ 33549 { 33550 "vuid": "VUID-VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT-sType-sType", 33551 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT</code>" 33552 } 33553 ] 33554 }, 33555 "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT": { 33556 "(VK_EXT_texel_buffer_alignment)": [ 33557 { 33558 "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT-sType-sType", 33559 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT</code>" 33560 } 33561 ] 33562 }, 33563 "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT": { 33564 "(VK_EXT_texture_compression_astc_hdr)": [ 33565 { 33566 "vuid": "VUID-VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT-sType-sType", 33567 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT</code>" 33568 } 33569 ] 33570 }, 33571 "VkPhysicalDeviceLineRasterizationFeaturesEXT": { 33572 "(VK_EXT_line_rasterization)": [ 33573 { 33574 "vuid": "VUID-VkPhysicalDeviceLineRasterizationFeaturesEXT-sType-sType", 33575 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT</code>" 33576 } 33577 ] 33578 }, 33579 "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT": { 33580 "(VK_EXT_subgroup_size_control)": [ 33581 { 33582 "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlFeaturesEXT-sType-sType", 33583 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT</code>" 33584 } 33585 ] 33586 }, 33587 "VkPhysicalDeviceCoherentMemoryFeaturesAMD": { 33588 "(VK_AMD_device_coherent_memory)": [ 33589 { 33590 "vuid": "VUID-VkPhysicalDeviceCoherentMemoryFeaturesAMD-sType-sType", 33591 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD</code>" 33592 } 33593 ] 33594 }, 33595 "VkPhysicalDeviceRayTracingFeaturesKHR": { 33596 "(VK_KHR_ray_tracing)": [ 33597 { 33598 "vuid": "VUID-VkPhysicalDeviceRayTracingFeaturesKHR-rayTracingShaderGroupHandleCaptureReplayMixed-03348", 33599 "text": " If <code>rayTracingShaderGroupHandleCaptureReplayMixed</code> is <code>VK_TRUE</code>, <code>rayTracingShaderGroupHandleCaptureReplay</code> <strong class=\"purple\">must</strong> also be <code>VK_TRUE</code>" 33600 }, 33601 { 33602 "vuid": "VUID-VkPhysicalDeviceRayTracingFeaturesKHR-sType-sType", 33603 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR</code>" 33604 } 33605 ] 33606 }, 33607 "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT": { 33608 "(VK_EXT_extended_dynamic_state)": [ 33609 { 33610 "vuid": "VUID-VkPhysicalDeviceExtendedDynamicStateFeaturesEXT-sType-sType", 33611 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT</code>" 33612 } 33613 ] 33614 }, 33615 "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV": { 33616 "(VK_NV_device_generated_commands)": [ 33617 { 33618 "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV-sType-sType", 33619 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV</code>" 33620 } 33621 ] 33622 }, 33623 "VkPhysicalDeviceDiagnosticsConfigFeaturesNV": { 33624 "(VK_NV_device_diagnostics_config)": [ 33625 { 33626 "vuid": "VUID-VkPhysicalDeviceDiagnosticsConfigFeaturesNV-sType-sType", 33627 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV</code>" 33628 } 33629 ] 33630 }, 33631 "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT": { 33632 "(VK_EXT_device_memory_report)": [ 33633 { 33634 "vuid": "VUID-VkPhysicalDeviceDeviceMemoryReportFeaturesEXT-sType-sType", 33635 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT</code>" 33636 } 33637 ] 33638 }, 33639 "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT": { 33640 "(VK_EXT_pipeline_creation_cache_control)": [ 33641 { 33642 "vuid": "VUID-VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT-sType-sType", 33643 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT</code>" 33644 } 33645 ] 33646 }, 33647 "VkPhysicalDevicePrivateDataFeaturesEXT": { 33648 "(VK_EXT_private_data)": [ 33649 { 33650 "vuid": "VUID-VkPhysicalDevicePrivateDataFeaturesEXT-sType-sType", 33651 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT</code>" 33652 } 33653 ] 33654 }, 33655 "VkPhysicalDeviceRobustness2FeaturesEXT": { 33656 "(VK_EXT_robustness2)": [ 33657 { 33658 "vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-robustBufferAccess2-04000", 33659 "text": " If <code>robustBufferAccess2</code> is enabled then <a href=\"#features-robustBufferAccess\"><code>robustBufferAccess</code></a> <strong class=\"purple\">must</strong> also be enabled" 33660 }, 33661 { 33662 "vuid": "VUID-VkPhysicalDeviceRobustness2FeaturesEXT-sType-sType", 33663 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT</code>" 33664 } 33665 ] 33666 }, 33667 "VkPhysicalDeviceImageRobustnessFeaturesEXT": { 33668 "(VK_EXT_image_robustness)": [ 33669 { 33670 "vuid": "VUID-VkPhysicalDeviceImageRobustnessFeaturesEXT-sType-sType", 33671 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT</code>" 33672 } 33673 ] 33674 }, 33675 "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR": { 33676 "(VK_KHR_shader_terminate_invocation)": [ 33677 { 33678 "vuid": "VUID-VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR-sType-sType", 33679 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR</code>" 33680 } 33681 ] 33682 }, 33683 "VkPhysicalDeviceCustomBorderColorFeaturesEXT": { 33684 "(VK_EXT_custom_border_color)": [ 33685 { 33686 "vuid": "VUID-VkPhysicalDeviceCustomBorderColorFeaturesEXT-sType-sType", 33687 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT</code>" 33688 } 33689 ] 33690 }, 33691 "VkPhysicalDevicePortabilitySubsetFeaturesKHR": { 33692 "(VK_KHR_portability_subset)": [ 33693 { 33694 "vuid": "VUID-VkPhysicalDevicePortabilitySubsetFeaturesKHR-sType-sType", 33695 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR</code>" 33696 } 33697 ] 33698 }, 33699 "VkPhysicalDevicePerformanceQueryFeaturesKHR": { 33700 "(VK_KHR_performance_query)": [ 33701 { 33702 "vuid": "VUID-VkPhysicalDevicePerformanceQueryFeaturesKHR-sType-sType", 33703 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR</code>" 33704 } 33705 ] 33706 }, 33707 "VkPhysicalDevice4444FormatsFeaturesEXT": { 33708 "(VK_EXT_4444_formats)": [ 33709 { 33710 "vuid": "VUID-VkPhysicalDevice4444FormatsFeaturesEXT-sType-sType", 33711 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT</code>" 33712 } 33713 ] 33714 }, 33715 "VkPhysicalDeviceFragmentShadingRateFeaturesKHR": { 33716 "(VK_KHR_fragment_shading_rate)": [ 33717 { 33718 "vuid": "VUID-VkPhysicalDeviceFragmentShadingRateFeaturesKHR-sType-sType", 33719 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR</code>" 33720 } 33721 ] 33722 }, 33723 "VkPhysicalDevicePushDescriptorPropertiesKHR": { 33724 "(VK_KHR_push_descriptor)": [ 33725 { 33726 "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType", 33727 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>" 33728 } 33729 ] 33730 }, 33731 "VkPhysicalDeviceMultiviewProperties": { 33732 "(VK_VERSION_1_1,VK_KHR_multiview)": [ 33733 { 33734 "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType", 33735 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>" 33736 } 33737 ] 33738 }, 33739 "VkPhysicalDeviceFloatControlsProperties": { 33740 "(VK_VERSION_1_2,VK_KHR_shader_float_controls)": [ 33741 { 33742 "vuid": "VUID-VkPhysicalDeviceFloatControlsProperties-sType-sType", 33743 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES</code>" 33744 } 33745 ] 33746 }, 33747 "VkPhysicalDeviceDiscardRectanglePropertiesEXT": { 33748 "(VK_EXT_discard_rectangles)": [ 33749 { 33750 "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType", 33751 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>" 33752 } 33753 ] 33754 }, 33755 "VkPhysicalDeviceSampleLocationsPropertiesEXT": { 33756 "(VK_EXT_sample_locations)": [ 33757 { 33758 "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType", 33759 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>" 33760 } 33761 ] 33762 }, 33763 "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": { 33764 "(VK_EXT_external_memory_host)": [ 33765 { 33766 "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType", 33767 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>" 33768 } 33769 ] 33770 }, 33771 "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": { 33772 "(VK_NVX_multiview_per_view_attributes)": [ 33773 { 33774 "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType", 33775 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>" 33776 } 33777 ] 33778 }, 33779 "VkPhysicalDevicePointClippingProperties": { 33780 "(VK_VERSION_1_1,VK_KHR_maintenance2)": [ 33781 { 33782 "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType", 33783 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>" 33784 } 33785 ] 33786 }, 33787 "VkPhysicalDeviceSubgroupProperties": { 33788 "(VK_VERSION_1_1)": [ 33789 { 33790 "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType", 33791 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>" 33792 } 33793 ] 33794 }, 33795 "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT": { 33796 "(VK_VERSION_1_1)+(VK_EXT_subgroup_size_control)": [ 33797 { 33798 "vuid": "VUID-VkPhysicalDeviceSubgroupSizeControlPropertiesEXT-sType-sType", 33799 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT</code>" 33800 } 33801 ] 33802 }, 33803 "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": { 33804 "(VK_EXT_blend_operation_advanced)": [ 33805 { 33806 "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType", 33807 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>" 33808 } 33809 ] 33810 }, 33811 "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": { 33812 "(VK_EXT_vertex_attribute_divisor)": [ 33813 { 33814 "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType", 33815 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>" 33816 } 33817 ] 33818 }, 33819 "VkPhysicalDeviceSamplerFilterMinmaxProperties": { 33820 "(VK_VERSION_1_2,VK_EXT_sampler_filter_minmax)": [ 33821 { 33822 "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxProperties-sType-sType", 33823 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES</code>" 33824 } 33825 ] 33826 }, 33827 "VkPhysicalDeviceProtectedMemoryProperties": { 33828 "(VK_VERSION_1_1)": [ 33829 { 33830 "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType", 33831 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>" 33832 } 33833 ] 33834 }, 33835 "VkPhysicalDeviceMaintenance3Properties": { 33836 "(VK_VERSION_1_1,VK_KHR_maintenance3)": [ 33837 { 33838 "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType", 33839 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>" 33840 } 33841 ] 33842 }, 33843 "VkPhysicalDeviceMeshShaderPropertiesNV": { 33844 "(VK_NV_mesh_shader)": [ 33845 { 33846 "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType", 33847 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV</code>" 33848 } 33849 ] 33850 }, 33851 "VkPhysicalDeviceDescriptorIndexingProperties": { 33852 "(VK_VERSION_1_2,VK_EXT_descriptor_indexing)": [ 33853 { 33854 "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingProperties-sType-sType", 33855 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES</code>" 33856 } 33857 ] 33858 }, 33859 "VkPhysicalDeviceInlineUniformBlockPropertiesEXT": { 33860 "(VK_EXT_inline_uniform_block)": [ 33861 { 33862 "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockPropertiesEXT-sType-sType", 33863 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT</code>" 33864 } 33865 ] 33866 }, 33867 "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": { 33868 "(VK_EXT_conservative_rasterization)": [ 33869 { 33870 "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType", 33871 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>" 33872 } 33873 ] 33874 }, 33875 "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": { 33876 "(VK_EXT_fragment_density_map)": [ 33877 { 33878 "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType", 33879 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT</code>" 33880 } 33881 ] 33882 }, 33883 "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT": { 33884 "(VK_EXT_fragment_density_map2)": [ 33885 { 33886 "vuid": "VUID-VkPhysicalDeviceFragmentDensityMap2PropertiesEXT-sType-sType", 33887 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT</code>" 33888 } 33889 ] 33890 }, 33891 "VkPhysicalDeviceShaderCorePropertiesAMD": { 33892 "(VK_AMD_shader_core_properties)": [ 33893 { 33894 "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType", 33895 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>" 33896 } 33897 ] 33898 }, 33899 "VkPhysicalDeviceShaderCoreProperties2AMD": { 33900 "(VK_AMD_shader_core_properties2)": [ 33901 { 33902 "vuid": "VUID-VkPhysicalDeviceShaderCoreProperties2AMD-sType-sType", 33903 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD</code>" 33904 } 33905 ] 33906 }, 33907 "VkPhysicalDeviceDepthStencilResolveProperties": { 33908 "(VK_VERSION_1_2,VK_KHR_depth_stencil_resolve)": [ 33909 { 33910 "vuid": "VUID-VkPhysicalDeviceDepthStencilResolveProperties-sType-sType", 33911 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES</code>" 33912 } 33913 ] 33914 }, 33915 "VkPhysicalDevicePerformanceQueryPropertiesKHR": { 33916 "(VK_KHR_performance_query)": [ 33917 { 33918 "vuid": "VUID-VkPhysicalDevicePerformanceQueryPropertiesKHR-sType-sType", 33919 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR</code>" 33920 } 33921 ] 33922 }, 33923 "VkPhysicalDeviceShadingRateImagePropertiesNV": { 33924 "(VK_NV_shading_rate_image)": [ 33925 { 33926 "vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType", 33927 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV</code>" 33928 } 33929 ] 33930 }, 33931 "VkPhysicalDeviceTransformFeedbackPropertiesEXT": { 33932 "(VK_EXT_transform_feedback)": [ 33933 { 33934 "vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType", 33935 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT</code>" 33936 } 33937 ] 33938 }, 33939 "VkPhysicalDeviceRayTracingPropertiesNV": { 33940 "(VK_NV_ray_tracing)": [ 33941 { 33942 "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType", 33943 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV</code>" 33944 } 33945 ] 33946 }, 33947 "VkPhysicalDeviceRayTracingPropertiesKHR": { 33948 "(VK_KHR_ray_tracing)": [ 33949 { 33950 "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesKHR-sType-sType", 33951 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_KHR</code>" 33952 } 33953 ] 33954 }, 33955 "VkPhysicalDeviceCooperativeMatrixPropertiesNV": { 33956 "(VK_NV_cooperative_matrix)": [ 33957 { 33958 "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType", 33959 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>" 33960 } 33961 ] 33962 }, 33963 "VkPhysicalDeviceShaderSMBuiltinsPropertiesNV": { 33964 "(VK_NV_shader_sm_builtins)": [ 33965 { 33966 "vuid": "VUID-VkPhysicalDeviceShaderSMBuiltinsPropertiesNV-sType-sType", 33967 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV</code>" 33968 } 33969 ] 33970 }, 33971 "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT": { 33972 "(VK_EXT_texel_buffer_alignment)": [ 33973 { 33974 "vuid": "VUID-VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT-sType-sType", 33975 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT</code>" 33976 } 33977 ] 33978 }, 33979 "VkPhysicalDeviceTimelineSemaphoreProperties": { 33980 "(VK_VERSION_1_2,VK_KHR_timeline_semaphore)": [ 33981 { 33982 "vuid": "VUID-VkPhysicalDeviceTimelineSemaphoreProperties-sType-sType", 33983 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES</code>" 33984 } 33985 ] 33986 }, 33987 "VkPhysicalDeviceLineRasterizationPropertiesEXT": { 33988 "(VK_EXT_line_rasterization)": [ 33989 { 33990 "vuid": "VUID-VkPhysicalDeviceLineRasterizationPropertiesEXT-sType-sType", 33991 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT</code>" 33992 } 33993 ] 33994 }, 33995 "VkPhysicalDeviceRobustness2PropertiesEXT": { 33996 "(VK_EXT_robustness2)": [ 33997 { 33998 "vuid": "VUID-VkPhysicalDeviceRobustness2PropertiesEXT-sType-sType", 33999 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT</code>" 34000 } 34001 ] 34002 }, 34003 "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV": { 34004 "(VK_NV_device_generated_commands)": [ 34005 { 34006 "vuid": "VUID-VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV-sType-sType", 34007 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV</code>" 34008 } 34009 ] 34010 }, 34011 "VkPhysicalDevicePortabilitySubsetPropertiesKHR": { 34012 "(VK_KHR_portability_subset)": [ 34013 { 34014 "vuid": "VUID-VkPhysicalDevicePortabilitySubsetPropertiesKHR-sType-sType", 34015 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR</code>" 34016 } 34017 ] 34018 }, 34019 "VkPhysicalDeviceFragmentShadingRatePropertiesKHR": { 34020 "(VK_KHR_fragment_shading_rate)": [ 34021 { 34022 "vuid": "VUID-VkPhysicalDeviceFragmentShadingRatePropertiesKHR-sType-sType", 34023 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR</code>" 34024 } 34025 ] 34026 }, 34027 "vkGetPhysicalDeviceMultisamplePropertiesEXT": { 34028 "(VK_EXT_sample_locations)": [ 34029 { 34030 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter", 34031 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34032 }, 34033 { 34034 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter", 34035 "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value" 34036 }, 34037 { 34038 "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter", 34039 "text": " <code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a> structure" 34040 } 34041 ] 34042 }, 34043 "VkMultisamplePropertiesEXT": { 34044 "(VK_EXT_sample_locations)": [ 34045 { 34046 "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType", 34047 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>" 34048 }, 34049 { 34050 "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext", 34051 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34052 } 34053 ] 34054 }, 34055 "VkPhysicalDeviceCustomBorderColorPropertiesEXT": { 34056 "(VK_EXT_custom_border_color)": [ 34057 { 34058 "vuid": "VUID-VkPhysicalDeviceCustomBorderColorPropertiesEXT-sType-sType", 34059 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT</code>" 34060 } 34061 ] 34062 }, 34063 "vkGetPhysicalDeviceFormatProperties": { 34064 "core": [ 34065 { 34066 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter", 34067 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34068 }, 34069 { 34070 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter", 34071 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 34072 }, 34073 { 34074 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter", 34075 "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFormatProperties\">VkFormatProperties</a> structure" 34076 } 34077 ] 34078 }, 34079 "vkGetPhysicalDeviceFormatProperties2": { 34080 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 34081 { 34082 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter", 34083 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34084 }, 34085 { 34086 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter", 34087 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 34088 }, 34089 { 34090 "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter", 34091 "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkFormatProperties2\">VkFormatProperties2</a> structure" 34092 } 34093 ] 34094 }, 34095 "VkFormatProperties2": { 34096 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 34097 { 34098 "vuid": "VUID-VkFormatProperties2-sType-sType", 34099 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>" 34100 }, 34101 { 34102 "vuid": "VUID-VkFormatProperties2-pNext-pNext", 34103 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>" 34104 }, 34105 { 34106 "vuid": "VUID-VkFormatProperties2-sType-unique", 34107 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 34108 } 34109 ] 34110 }, 34111 "VkDrmFormatModifierPropertiesListEXT": { 34112 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [ 34113 { 34114 "vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType", 34115 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT</code>" 34116 } 34117 ] 34118 }, 34119 "vkGetPhysicalDeviceImageFormatProperties": { 34120 "(VK_EXT_image_drm_format_modifier)": [ 34121 { 34122 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248", 34123 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>. (Use <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> instead)" 34124 } 34125 ], 34126 "core": [ 34127 { 34128 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter", 34129 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34130 }, 34131 { 34132 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter", 34133 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 34134 }, 34135 { 34136 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter", 34137 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 34138 }, 34139 { 34140 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter", 34141 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 34142 }, 34143 { 34144 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter", 34145 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 34146 }, 34147 { 34148 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask", 34149 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 34150 }, 34151 { 34152 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter", 34153 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 34154 }, 34155 { 34156 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter", 34157 "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageFormatProperties\">VkImageFormatProperties</a> structure" 34158 } 34159 ] 34160 }, 34161 "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": { 34162 "(VK_NV_external_memory_capabilities)": [ 34163 { 34164 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter", 34165 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34166 }, 34167 { 34168 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter", 34169 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 34170 }, 34171 { 34172 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter", 34173 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 34174 }, 34175 { 34176 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter", 34177 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 34178 }, 34179 { 34180 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter", 34181 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 34182 }, 34183 { 34184 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask", 34185 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 34186 }, 34187 { 34188 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter", 34189 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 34190 }, 34191 { 34192 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter", 34193 "text": " <code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values" 34194 }, 34195 { 34196 "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter", 34197 "text": " <code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a> structure" 34198 } 34199 ] 34200 }, 34201 "vkGetPhysicalDeviceImageFormatProperties2": { 34202 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 34203 { 34204 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868", 34205 "text": " If the <code>pNext</code> chain of <code>pImageFormatProperties</code> includes a <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a> structure, the <code>pNext</code> chain of <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> include a <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> structure with <code>handleType</code> set to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>" 34206 } 34207 ], 34208 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 34209 { 34210 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter", 34211 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34212 }, 34213 { 34214 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter", 34215 "text": " <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure" 34216 }, 34217 { 34218 "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter", 34219 "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure" 34220 } 34221 ] 34222 }, 34223 "VkPhysicalDeviceImageFormatInfo2": { 34224 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [ 34225 { 34226 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249", 34227 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> if and only if the <code>pNext</code> chain includes <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>" 34228 }, 34229 { 34230 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313", 34231 "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a> structure with non-zero <code>viewFormatCount</code>" 34232 } 34233 ], 34234 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 34235 { 34236 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType", 34237 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>" 34238 }, 34239 { 34240 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext", 34241 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageFormatListCreateInfo\">VkImageFormatListCreateInfo</a>, <a href=\"#VkImageStencilUsageCreateInfo\">VkImageStencilUsageCreateInfo</a>, <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a>, <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>, or <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a>" 34242 }, 34243 { 34244 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique", 34245 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 34246 }, 34247 { 34248 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter", 34249 "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value" 34250 }, 34251 { 34252 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter", 34253 "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value" 34254 }, 34255 { 34256 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter", 34257 "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value" 34258 }, 34259 { 34260 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter", 34261 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values" 34262 }, 34263 { 34264 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask", 34265 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 34266 }, 34267 { 34268 "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter", 34269 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values" 34270 } 34271 ] 34272 }, 34273 "VkImageFormatProperties2": { 34274 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [ 34275 { 34276 "vuid": "VUID-VkImageFormatProperties2-sType-sType", 34277 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>" 34278 }, 34279 { 34280 "vuid": "VUID-VkImageFormatProperties2-pNext-pNext", 34281 "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>, <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>, <a href=\"#VkSamplerYcbcrConversionImageFormatProperties\">VkSamplerYcbcrConversionImageFormatProperties</a>, or <a href=\"#VkTextureLODGatherFormatPropertiesAMD\">VkTextureLODGatherFormatPropertiesAMD</a>" 34282 }, 34283 { 34284 "vuid": "VUID-VkImageFormatProperties2-sType-unique", 34285 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 34286 } 34287 ] 34288 }, 34289 "VkTextureLODGatherFormatPropertiesAMD": { 34290 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [ 34291 { 34292 "vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType", 34293 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD</code>" 34294 } 34295 ] 34296 }, 34297 "VkPhysicalDeviceExternalImageFormatInfo": { 34298 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 34299 { 34300 "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType", 34301 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>" 34302 }, 34303 { 34304 "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter", 34305 "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 34306 } 34307 ] 34308 }, 34309 "VkExternalImageFormatProperties": { 34310 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 34311 { 34312 "vuid": "VUID-VkExternalImageFormatProperties-sType-sType", 34313 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>" 34314 } 34315 ] 34316 }, 34317 "VkPhysicalDeviceImageDrmFormatModifierInfoEXT": { 34318 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [ 34319 { 34320 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314", 34321 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, then <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values" 34322 }, 34323 { 34324 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315", 34325 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, then <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>" 34326 }, 34327 { 34328 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316", 34329 "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than the <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>" 34330 }, 34331 { 34332 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType", 34333 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT</code>" 34334 }, 34335 { 34336 "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter", 34337 "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value" 34338 } 34339 ] 34340 }, 34341 "VkSamplerYcbcrConversionImageFormatProperties": { 34342 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [ 34343 { 34344 "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType", 34345 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>" 34346 } 34347 ] 34348 }, 34349 "VkAndroidHardwareBufferUsageANDROID": { 34350 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [ 34351 { 34352 "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType", 34353 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>" 34354 } 34355 ] 34356 }, 34357 "VkPhysicalDeviceImageViewImageFormatInfoEXT": { 34358 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [ 34359 { 34360 "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType", 34361 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT</code>" 34362 }, 34363 { 34364 "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter", 34365 "text": " <code>imageViewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value" 34366 } 34367 ] 34368 }, 34369 "VkFilterCubicImageViewImageFormatPropertiesEXT": { 34370 "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [ 34371 { 34372 "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType", 34373 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT</code>" 34374 }, 34375 { 34376 "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627", 34377 "text": " If the <code>pNext</code> chain of the <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure includes a <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a> structure, the <code>pNext</code> chain of the <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure <strong class=\"purple\">must</strong> include a <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a> structure with an <code>imageViewType</code> that is compatible with <code>imageType</code>" 34378 } 34379 ] 34380 }, 34381 "vkGetPhysicalDeviceExternalBufferProperties": { 34382 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 34383 { 34384 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter", 34385 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34386 }, 34387 { 34388 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter", 34389 "text": " <code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalBufferInfo\">VkPhysicalDeviceExternalBufferInfo</a> structure" 34390 }, 34391 { 34392 "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter", 34393 "text": " <code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a> structure" 34394 } 34395 ] 34396 }, 34397 "VkPhysicalDeviceExternalBufferInfo": { 34398 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 34399 { 34400 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType", 34401 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>" 34402 }, 34403 { 34404 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext", 34405 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34406 }, 34407 { 34408 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter", 34409 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values" 34410 }, 34411 { 34412 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter", 34413 "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values" 34414 }, 34415 { 34416 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask", 34417 "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 34418 }, 34419 { 34420 "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter", 34421 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value" 34422 } 34423 ] 34424 }, 34425 "VkExternalBufferProperties": { 34426 "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [ 34427 { 34428 "vuid": "VUID-VkExternalBufferProperties-sType-sType", 34429 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>" 34430 }, 34431 { 34432 "vuid": "VUID-VkExternalBufferProperties-pNext-pNext", 34433 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34434 } 34435 ] 34436 }, 34437 "vkGetPhysicalDeviceExternalSemaphoreProperties": { 34438 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [ 34439 { 34440 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter", 34441 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34442 }, 34443 { 34444 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter", 34445 "text": " <code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalSemaphoreInfo\">VkPhysicalDeviceExternalSemaphoreInfo</a> structure" 34446 }, 34447 { 34448 "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter", 34449 "text": " <code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a> structure" 34450 } 34451 ] 34452 }, 34453 "VkPhysicalDeviceExternalSemaphoreInfo": { 34454 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [ 34455 { 34456 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType", 34457 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>" 34458 }, 34459 { 34460 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext", 34461 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSemaphoreTypeCreateInfo\">VkSemaphoreTypeCreateInfo</a>" 34462 }, 34463 { 34464 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-unique", 34465 "text": " The <code>sType</code> value of each struct in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique" 34466 }, 34467 { 34468 "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter", 34469 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value" 34470 } 34471 ] 34472 }, 34473 "VkExternalSemaphoreProperties": { 34474 "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [ 34475 { 34476 "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType", 34477 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>" 34478 }, 34479 { 34480 "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext", 34481 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34482 } 34483 ] 34484 }, 34485 "vkGetPhysicalDeviceExternalFenceProperties": { 34486 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [ 34487 { 34488 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter", 34489 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34490 }, 34491 { 34492 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter", 34493 "text": " <code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPhysicalDeviceExternalFenceInfo\">VkPhysicalDeviceExternalFenceInfo</a> structure" 34494 }, 34495 { 34496 "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter", 34497 "text": " <code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a> structure" 34498 } 34499 ] 34500 }, 34501 "VkPhysicalDeviceExternalFenceInfo": { 34502 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [ 34503 { 34504 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType", 34505 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>" 34506 }, 34507 { 34508 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext", 34509 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34510 }, 34511 { 34512 "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter", 34513 "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value" 34514 } 34515 ] 34516 }, 34517 "VkExternalFenceProperties": { 34518 "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [ 34519 { 34520 "vuid": "VUID-VkExternalFenceProperties-sType-sType", 34521 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>" 34522 }, 34523 { 34524 "vuid": "VUID-VkExternalFenceProperties-pNext-pNext", 34525 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34526 } 34527 ] 34528 }, 34529 "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": { 34530 "(VK_EXT_calibrated_timestamps)": [ 34531 { 34532 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter", 34533 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 34534 }, 34535 { 34536 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter", 34537 "text": " <code>pTimeDomainCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 34538 }, 34539 { 34540 "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter", 34541 "text": " If the value referenced by <code>pTimeDomainCount</code> is not <code>0</code>, and <code>pTimeDomains</code> is not <code>NULL</code>, <code>pTimeDomains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pTimeDomainCount</code> <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values" 34542 } 34543 ] 34544 }, 34545 "vkSetDebugUtilsObjectNameEXT": { 34546 "(VK_EXT_debug_utils)": [ 34547 { 34548 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587", 34549 "text": " <code>pNameInfo->objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>" 34550 }, 34551 { 34552 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588", 34553 "text": " <code>pNameInfo->objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 34554 }, 34555 { 34556 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter", 34557 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 34558 }, 34559 { 34560 "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter", 34561 "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsObjectNameInfoEXT\">VkDebugUtilsObjectNameInfoEXT</a> structure" 34562 } 34563 ] 34564 }, 34565 "VkDebugUtilsObjectNameInfoEXT": { 34566 "(VK_EXT_debug_utils)": [ 34567 { 34568 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589", 34569 "text": " If <code>objectType</code> is <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 34570 }, 34571 { 34572 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590", 34573 "text": " If <code>objectType</code> is not <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> or a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\"><code>VkObjectType</code> and Vulkan Handle Relationship</a> table" 34574 }, 34575 { 34576 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType", 34577 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>" 34578 }, 34579 { 34580 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext", 34581 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34582 }, 34583 { 34584 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter", 34585 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value" 34586 }, 34587 { 34588 "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter", 34589 "text": " If <code>pObjectName</code> is not <code>NULL</code>, <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 34590 } 34591 ] 34592 }, 34593 "vkSetDebugUtilsObjectTagEXT": { 34594 "(VK_EXT_debug_utils)": [ 34595 { 34596 "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter", 34597 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 34598 }, 34599 { 34600 "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter", 34601 "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsObjectTagInfoEXT\">VkDebugUtilsObjectTagInfoEXT</a> structure" 34602 } 34603 ] 34604 }, 34605 "VkDebugUtilsObjectTagInfoEXT": { 34606 "(VK_EXT_debug_utils)": [ 34607 { 34608 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908", 34609 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>" 34610 }, 34611 { 34612 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910", 34613 "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\"><code>VkObjectType</code> and Vulkan Handle Relationship</a> table" 34614 }, 34615 { 34616 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType", 34617 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>" 34618 }, 34619 { 34620 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext", 34621 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34622 }, 34623 { 34624 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter", 34625 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value" 34626 }, 34627 { 34628 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter", 34629 "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes" 34630 }, 34631 { 34632 "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength", 34633 "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 34634 } 34635 ] 34636 }, 34637 "vkQueueBeginDebugUtilsLabelEXT": { 34638 "(VK_EXT_debug_utils)": [ 34639 { 34640 "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter", 34641 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 34642 }, 34643 { 34644 "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter", 34645 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure" 34646 } 34647 ] 34648 }, 34649 "VkDebugUtilsLabelEXT": { 34650 "(VK_EXT_debug_utils)": [ 34651 { 34652 "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType", 34653 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>" 34654 }, 34655 { 34656 "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext", 34657 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34658 }, 34659 { 34660 "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter", 34661 "text": " <code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 34662 } 34663 ] 34664 }, 34665 "vkQueueEndDebugUtilsLabelEXT": { 34666 "(VK_EXT_debug_utils)": [ 34667 { 34668 "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911", 34669 "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue" 34670 }, 34671 { 34672 "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter", 34673 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 34674 } 34675 ] 34676 }, 34677 "vkQueueInsertDebugUtilsLabelEXT": { 34678 "(VK_EXT_debug_utils)": [ 34679 { 34680 "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter", 34681 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 34682 }, 34683 { 34684 "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter", 34685 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure" 34686 } 34687 ] 34688 }, 34689 "vkCmdBeginDebugUtilsLabelEXT": { 34690 "(VK_EXT_debug_utils)": [ 34691 { 34692 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter", 34693 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 34694 }, 34695 { 34696 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter", 34697 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure" 34698 }, 34699 { 34700 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording", 34701 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 34702 }, 34703 { 34704 "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool", 34705 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 34706 } 34707 ] 34708 }, 34709 "vkCmdEndDebugUtilsLabelEXT": { 34710 "(VK_EXT_debug_utils)": [ 34711 { 34712 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912", 34713 "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command prior to the <code>vkCmdEndDebugUtilsLabelEXT</code> on the queue that <code>commandBuffer</code> is submitted to" 34714 }, 34715 { 34716 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913", 34717 "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <code>vkCmdEndDebugUtilsLabelEXT</code>" 34718 }, 34719 { 34720 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter", 34721 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 34722 }, 34723 { 34724 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording", 34725 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 34726 }, 34727 { 34728 "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool", 34729 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 34730 } 34731 ] 34732 }, 34733 "vkCmdInsertDebugUtilsLabelEXT": { 34734 "(VK_EXT_debug_utils)": [ 34735 { 34736 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter", 34737 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 34738 }, 34739 { 34740 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter", 34741 "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structure" 34742 }, 34743 { 34744 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording", 34745 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 34746 }, 34747 { 34748 "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool", 34749 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 34750 } 34751 ] 34752 }, 34753 "vkCreateDebugUtilsMessengerEXT": { 34754 "(VK_EXT_debug_utils)": [ 34755 { 34756 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter", 34757 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 34758 }, 34759 { 34760 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter", 34761 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a> structure" 34762 }, 34763 { 34764 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter", 34765 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 34766 }, 34767 { 34768 "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter", 34769 "text": " <code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDebugUtilsMessengerEXT\">VkDebugUtilsMessengerEXT</a> handle" 34770 } 34771 ] 34772 }, 34773 "VkDebugUtilsMessengerCreateInfoEXT": { 34774 "(VK_EXT_debug_utils)": [ 34775 { 34776 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914", 34777 "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a>" 34778 }, 34779 { 34780 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType", 34781 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>" 34782 }, 34783 { 34784 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask", 34785 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 34786 }, 34787 { 34788 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter", 34789 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values" 34790 }, 34791 { 34792 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask", 34793 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 34794 }, 34795 { 34796 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter", 34797 "text": " <code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values" 34798 }, 34799 { 34800 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask", 34801 "text": " <code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 34802 }, 34803 { 34804 "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-parameter", 34805 "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a> value" 34806 } 34807 ] 34808 }, 34809 "VkDebugUtilsMessengerCallbackDataEXT": { 34810 "(VK_EXT_debug_utils)": [ 34811 { 34812 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType", 34813 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>" 34814 }, 34815 { 34816 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext", 34817 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34818 }, 34819 { 34820 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask", 34821 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>" 34822 }, 34823 { 34824 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter", 34825 "text": " If <code>pMessageIdName</code> is not <code>NULL</code>, <code>pMessageIdName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 34826 }, 34827 { 34828 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter", 34829 "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 34830 }, 34831 { 34832 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter", 34833 "text": " If <code>queueLabelCount</code> is not <code>0</code>, <code>pQueueLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueLabelCount</code> valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structures" 34834 }, 34835 { 34836 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter", 34837 "text": " If <code>cmdBufLabelCount</code> is not <code>0</code>, <code>pCmdBufLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>cmdBufLabelCount</code> valid <a href=\"#VkDebugUtilsLabelEXT\">VkDebugUtilsLabelEXT</a> structures" 34838 }, 34839 { 34840 "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter", 34841 "text": " If <code>objectCount</code> is not <code>0</code>, <code>pObjects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkDebugUtilsObjectNameInfoEXT\">VkDebugUtilsObjectNameInfoEXT</a> structures" 34842 } 34843 ] 34844 }, 34845 "vkSubmitDebugUtilsMessageEXT": { 34846 "(VK_EXT_debug_utils)": [ 34847 { 34848 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591", 34849 "text": " The <code>objectType</code> member of each element of <code>pCallbackData->pObjects</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>" 34850 }, 34851 { 34852 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter", 34853 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 34854 }, 34855 { 34856 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter", 34857 "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value" 34858 }, 34859 { 34860 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter", 34861 "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values" 34862 }, 34863 { 34864 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask", 34865 "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 34866 }, 34867 { 34868 "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter", 34869 "text": " <code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugUtilsMessengerCallbackDataEXT\">VkDebugUtilsMessengerCallbackDataEXT</a> structure" 34870 } 34871 ] 34872 }, 34873 "vkDestroyDebugUtilsMessengerEXT": { 34874 "(VK_EXT_debug_utils)": [ 34875 { 34876 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915", 34877 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 34878 }, 34879 { 34880 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916", 34881 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34882 }, 34883 { 34884 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter", 34885 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 34886 }, 34887 { 34888 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter", 34889 "text": " If <code>messenger</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>messenger</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessengerEXT\">VkDebugUtilsMessengerEXT</a> handle" 34890 }, 34891 { 34892 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter", 34893 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 34894 }, 34895 { 34896 "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent", 34897 "text": " If <code>messenger</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>" 34898 } 34899 ] 34900 }, 34901 "vkDebugMarkerSetObjectNameEXT": { 34902 "(VK_EXT_debug_marker)": [ 34903 { 34904 "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter", 34905 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 34906 }, 34907 { 34908 "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter", 34909 "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerObjectNameInfoEXT\">VkDebugMarkerObjectNameInfoEXT</a> structure" 34910 } 34911 ] 34912 }, 34913 "VkDebugMarkerObjectNameInfoEXT": { 34914 "(VK_EXT_debug_marker)": [ 34915 { 34916 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490", 34917 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>" 34918 }, 34919 { 34920 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491", 34921 "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 34922 }, 34923 { 34924 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492", 34925 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>" 34926 }, 34927 { 34928 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType", 34929 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>" 34930 }, 34931 { 34932 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext", 34933 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34934 }, 34935 { 34936 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter", 34937 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value" 34938 }, 34939 { 34940 "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter", 34941 "text": " <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 34942 } 34943 ] 34944 }, 34945 "vkDebugMarkerSetObjectTagEXT": { 34946 "(VK_EXT_debug_marker)": [ 34947 { 34948 "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter", 34949 "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDevice\">VkDevice</a> handle" 34950 }, 34951 { 34952 "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter", 34953 "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerObjectTagInfoEXT\">VkDebugMarkerObjectTagInfoEXT</a> structure" 34954 } 34955 ] 34956 }, 34957 "VkDebugMarkerObjectTagInfoEXT": { 34958 "(VK_EXT_debug_marker)": [ 34959 { 34960 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493", 34961 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>" 34962 }, 34963 { 34964 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494", 34965 "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 34966 }, 34967 { 34968 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495", 34969 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>" 34970 }, 34971 { 34972 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType", 34973 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>" 34974 }, 34975 { 34976 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext", 34977 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 34978 }, 34979 { 34980 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter", 34981 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value" 34982 }, 34983 { 34984 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter", 34985 "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes" 34986 }, 34987 { 34988 "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength", 34989 "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>" 34990 } 34991 ] 34992 }, 34993 "vkCmdDebugMarkerBeginEXT": { 34994 "(VK_EXT_debug_marker)": [ 34995 { 34996 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter", 34997 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 34998 }, 34999 { 35000 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter", 35001 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerMarkerInfoEXT\">VkDebugMarkerMarkerInfoEXT</a> structure" 35002 }, 35003 { 35004 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording", 35005 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 35006 }, 35007 { 35008 "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool", 35009 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 35010 } 35011 ] 35012 }, 35013 "VkDebugMarkerMarkerInfoEXT": { 35014 "(VK_EXT_debug_marker)": [ 35015 { 35016 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType", 35017 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>" 35018 }, 35019 { 35020 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext", 35021 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 35022 }, 35023 { 35024 "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter", 35025 "text": " <code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 35026 } 35027 ] 35028 }, 35029 "vkCmdDebugMarkerEndEXT": { 35030 "(VK_EXT_debug_marker)": [ 35031 { 35032 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239", 35033 "text": " There <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command prior to the <code>vkCmdDebugMarkerEndEXT</code> on the queue that <code>commandBuffer</code> is submitted to" 35034 }, 35035 { 35036 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240", 35037 "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>" 35038 }, 35039 { 35040 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter", 35041 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 35042 }, 35043 { 35044 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording", 35045 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 35046 }, 35047 { 35048 "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool", 35049 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 35050 } 35051 ] 35052 }, 35053 "vkCmdDebugMarkerInsertEXT": { 35054 "(VK_EXT_debug_marker)": [ 35055 { 35056 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter", 35057 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 35058 }, 35059 { 35060 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter", 35061 "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugMarkerMarkerInfoEXT\">VkDebugMarkerMarkerInfoEXT</a> structure" 35062 }, 35063 { 35064 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording", 35065 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 35066 }, 35067 { 35068 "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool", 35069 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations" 35070 } 35071 ] 35072 }, 35073 "vkCreateDebugReportCallbackEXT": { 35074 "(VK_EXT_debug_report)": [ 35075 { 35076 "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter", 35077 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 35078 }, 35079 { 35080 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter", 35081 "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a> structure" 35082 }, 35083 { 35084 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter", 35085 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 35086 }, 35087 { 35088 "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter", 35089 "text": " <code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDebugReportCallbackEXT\">VkDebugReportCallbackEXT</a> handle" 35090 } 35091 ] 35092 }, 35093 "VkDebugReportCallbackCreateInfoEXT": { 35094 "(VK_EXT_debug_report)": [ 35095 { 35096 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType", 35097 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>" 35098 }, 35099 { 35100 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter", 35101 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values" 35102 }, 35103 { 35104 "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-parameter", 35105 "text": " <code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a> value" 35106 } 35107 ] 35108 }, 35109 "vkDebugReportMessageEXT": { 35110 "(VK_EXT_debug_report)": [ 35111 { 35112 "vuid": "VUID-vkDebugReportMessageEXT-object-01241", 35113 "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>" 35114 }, 35115 { 35116 "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498", 35117 "text": " If <code>objectType</code> is not <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code> and <code>object</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the corresponding type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\"><code>VkDebugReportObjectTypeEXT</code> and Vulkan Handle Relationship</a>" 35118 }, 35119 { 35120 "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter", 35121 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 35122 }, 35123 { 35124 "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter", 35125 "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values" 35126 }, 35127 { 35128 "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask", 35129 "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>" 35130 }, 35131 { 35132 "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter", 35133 "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value" 35134 }, 35135 { 35136 "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter", 35137 "text": " <code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 35138 }, 35139 { 35140 "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter", 35141 "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string" 35142 } 35143 ] 35144 }, 35145 "vkDestroyDebugReportCallbackEXT": { 35146 "(VK_EXT_debug_report)": [ 35147 { 35148 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242", 35149 "text": " If <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here" 35150 }, 35151 { 35152 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243", 35153 "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 35154 }, 35155 { 35156 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter", 35157 "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkInstance\">VkInstance</a> handle" 35158 }, 35159 { 35160 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter", 35161 "text": " If <code>callback</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportCallbackEXT\">VkDebugReportCallbackEXT</a> handle" 35162 }, 35163 { 35164 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter", 35165 "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkAllocationCallbacks\">VkAllocationCallbacks</a> structure" 35166 }, 35167 { 35168 "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent", 35169 "text": " If <code>callback</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>" 35170 } 35171 ] 35172 }, 35173 "vkCmdSetCheckpointNV": { 35174 "(VK_NV_device_diagnostic_checkpoints)": [ 35175 { 35176 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter", 35177 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBuffer\">VkCommandBuffer</a> handle" 35178 }, 35179 { 35180 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording", 35181 "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>" 35182 }, 35183 { 35184 "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool", 35185 "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations" 35186 } 35187 ] 35188 }, 35189 "vkGetQueueCheckpointDataNV": { 35190 "(VK_NV_device_diagnostic_checkpoints)": [ 35191 { 35192 "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025", 35193 "text": " The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state" 35194 }, 35195 { 35196 "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter", 35197 "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueue\">VkQueue</a> handle" 35198 }, 35199 { 35200 "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter", 35201 "text": " <code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 35202 }, 35203 { 35204 "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter", 35205 "text": " If the value referenced by <code>pCheckpointDataCount</code> is not <code>0</code>, and <code>pCheckpointData</code> is not <code>NULL</code>, <code>pCheckpointData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCheckpointDataCount</code> <a href=\"#VkCheckpointDataNV\">VkCheckpointDataNV</a> structures" 35206 } 35207 ] 35208 }, 35209 "VkCheckpointDataNV": { 35210 "(VK_NV_device_diagnostic_checkpoints)": [ 35211 { 35212 "vuid": "VUID-VkCheckpointDataNV-sType-sType", 35213 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV</code>" 35214 }, 35215 { 35216 "vuid": "VUID-VkCheckpointDataNV-pNext-pNext", 35217 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 35218 } 35219 ] 35220 }, 35221 "vkGetPhysicalDeviceToolPropertiesEXT": { 35222 "(VK_EXT_tooling_info)": [ 35223 { 35224 "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-physicalDevice-parameter", 35225 "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> handle" 35226 }, 35227 { 35228 "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolCount-parameter", 35229 "text": " <code>pToolCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value" 35230 }, 35231 { 35232 "vuid": "VUID-vkGetPhysicalDeviceToolPropertiesEXT-pToolProperties-parameter", 35233 "text": " If the value referenced by <code>pToolCount</code> is not <code>0</code>, and <code>pToolProperties</code> is not <code>NULL</code>, <code>pToolProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pToolCount</code> <a href=\"#VkPhysicalDeviceToolPropertiesEXT\">VkPhysicalDeviceToolPropertiesEXT</a> structures" 35234 } 35235 ] 35236 }, 35237 "VkPhysicalDeviceToolPropertiesEXT": { 35238 "(VK_EXT_tooling_info)": [ 35239 { 35240 "vuid": "VUID-VkPhysicalDeviceToolPropertiesEXT-sType-sType", 35241 "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT</code>" 35242 }, 35243 { 35244 "vuid": "VUID-VkPhysicalDeviceToolPropertiesEXT-pNext-pNext", 35245 "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>" 35246 } 35247 ] 35248 } 35249 } 35250}