Home | History | Annotate | Download | only in registry
      1 {
      2   "version info": {
      3     "schema version": 2,
      4     "api version": "1.1.102",
      5     "comment": "from git branch: github-master commit: 35e7bee5f0f50b7c1634cd205ded035acea43ad9",
      6     "date": "2019-03-04 05:06:36Z"
      7   },
      8   "validation": {
      9     "vkGetInstanceProcAddr": {
     10       "core": [
     11         {
     12           "vuid": "VUID-vkGetInstanceProcAddr-instance-parameter",
     13           "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
     14         },
     15         {
     16           "vuid": "VUID-vkGetInstanceProcAddr-pName-parameter",
     17           "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
     18         }
     19       ]
     20     },
     21     "vkGetDeviceProcAddr": {
     22       "core": [
     23         {
     24           "vuid": "VUID-vkGetDeviceProcAddr-device-parameter",
     25           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
     26         },
     27         {
     28           "vuid": "VUID-vkGetDeviceProcAddr-pName-parameter",
     29           "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
     30         }
     31       ]
     32     },
     33     "vkEnumerateInstanceVersion": {
     34       "(VK_VERSION_1_1)": [
     35         {
     36           "vuid": "VUID-vkEnumerateInstanceVersion-pApiVersion-parameter",
     37           "text": " <code>pApiVersion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
     38         }
     39       ]
     40     },
     41     "vkCreateInstance": {
     42       "core": [
     43         {
     44           "vuid": "VUID-vkCreateInstance-ppEnabledExtensionNames-01388",
     45           "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkInstanceCreateInfo\">VkInstanceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list."
     46         },
     47         {
     48           "vuid": "VUID-vkCreateInstance-pCreateInfo-parameter",
     49           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkInstanceCreateInfo</code> structure"
     50         },
     51         {
     52           "vuid": "VUID-vkCreateInstance-pAllocator-parameter",
     53           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
     54         },
     55         {
     56           "vuid": "VUID-vkCreateInstance-pInstance-parameter",
     57           "text": " <code>pInstance</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkInstance</code> handle"
     58         }
     59       ]
     60     },
     61     "VkInstanceCreateInfo": {
     62       "core": [
     63         {
     64           "vuid": "VUID-VkInstanceCreateInfo-sType-sType",
     65           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO</code>"
     66         },
     67         {
     68           "vuid": "VUID-VkInstanceCreateInfo-pNext-pNext",
     69           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDebugReportCallbackCreateInfoEXT\">VkDebugReportCallbackCreateInfoEXT</a>, <a href=\"#VkDebugUtilsMessengerCreateInfoEXT\">VkDebugUtilsMessengerCreateInfoEXT</a>, <a href=\"#VkValidationFeaturesEXT\">VkValidationFeaturesEXT</a>, or <a href=\"#VkValidationFlagsEXT\">VkValidationFlagsEXT</a>"
     70         },
     71         {
     72           "vuid": "VUID-VkInstanceCreateInfo-sType-unique",
     73           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
     74         },
     75         {
     76           "vuid": "VUID-VkInstanceCreateInfo-flags-zerobitmask",
     77           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
     78         },
     79         {
     80           "vuid": "VUID-VkInstanceCreateInfo-pApplicationInfo-parameter",
     81           "text": " If <code>pApplicationInfo</code> is not <code>NULL</code>, <code>pApplicationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkApplicationInfo</code> structure"
     82         },
     83         {
     84           "vuid": "VUID-VkInstanceCreateInfo-ppEnabledLayerNames-parameter",
     85           "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings"
     86         },
     87         {
     88           "vuid": "VUID-VkInstanceCreateInfo-ppEnabledExtensionNames-parameter",
     89           "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings"
     90         }
     91       ]
     92     },
     93     "VkValidationFlagsEXT": {
     94       "(VK_EXT_validation_flags)": [
     95         {
     96           "vuid": "VUID-VkValidationFlagsEXT-sType-sType",
     97           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT</code>"
     98         },
     99         {
    100           "vuid": "VUID-VkValidationFlagsEXT-pDisabledValidationChecks-parameter",
    101           "text": " <code>pDisabledValidationChecks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationCheckCount</code> valid <a href=\"#VkValidationCheckEXT\">VkValidationCheckEXT</a> values"
    102         },
    103         {
    104           "vuid": "VUID-VkValidationFlagsEXT-disabledValidationCheckCount-arraylength",
    105           "text": " <code>disabledValidationCheckCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
    106         }
    107       ]
    108     },
    109     "VkValidationFeaturesEXT": {
    110       "(VK_EXT_validation_features)": [
    111         {
    112           "vuid": "VUID-VkValidationFeaturesEXT-sType-sType",
    113           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT</code>"
    114         },
    115         {
    116           "vuid": "VUID-VkValidationFeaturesEXT-pEnabledValidationFeatures-parameter",
    117           "text": " If <code>enabledValidationFeatureCount</code> is not <code>0</code>, <code>pEnabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureEnableEXT\">VkValidationFeatureEnableEXT</a> values"
    118         },
    119         {
    120           "vuid": "VUID-VkValidationFeaturesEXT-pDisabledValidationFeatures-parameter",
    121           "text": " If <code>disabledValidationFeatureCount</code> is not <code>0</code>, <code>pDisabledValidationFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>disabledValidationFeatureCount</code> valid <a href=\"#VkValidationFeatureDisableEXT\">VkValidationFeatureDisableEXT</a> values"
    122         }
    123       ]
    124     },
    125     "VkApplicationInfo": {
    126       "core": [
    127         {
    128           "vuid": "VUID-VkApplicationInfo-sType-sType",
    129           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_APPLICATION_INFO</code>"
    130         },
    131         {
    132           "vuid": "VUID-VkApplicationInfo-pNext-pNext",
    133           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    134         },
    135         {
    136           "vuid": "VUID-VkApplicationInfo-pApplicationName-parameter",
    137           "text": " If <code>pApplicationName</code> is not <code>NULL</code>, <code>pApplicationName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
    138         },
    139         {
    140           "vuid": "VUID-VkApplicationInfo-pEngineName-parameter",
    141           "text": " If <code>pEngineName</code> is not <code>NULL</code>, <code>pEngineName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
    142         }
    143       ]
    144     },
    145     "vkDestroyInstance": {
    146       "core": [
    147         {
    148           "vuid": "VUID-vkDestroyInstance-instance-00629",
    149           "text": " All child objects created using <code>instance</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>instance</code>"
    150         },
    151         {
    152           "vuid": "VUID-vkDestroyInstance-instance-00630",
    153           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
    154         },
    155         {
    156           "vuid": "VUID-vkDestroyInstance-instance-00631",
    157           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>instance</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    158         },
    159         {
    160           "vuid": "VUID-vkDestroyInstance-instance-parameter",
    161           "text": " If <code>instance</code> is not <code>NULL</code>, <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
    162         },
    163         {
    164           "vuid": "VUID-vkDestroyInstance-pAllocator-parameter",
    165           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
    166         }
    167       ]
    168     },
    169     "vkEnumeratePhysicalDevices": {
    170       "core": [
    171         {
    172           "vuid": "VUID-vkEnumeratePhysicalDevices-instance-parameter",
    173           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
    174         },
    175         {
    176           "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDeviceCount-parameter",
    177           "text": " <code>pPhysicalDeviceCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
    178         },
    179         {
    180           "vuid": "VUID-vkEnumeratePhysicalDevices-pPhysicalDevices-parameter",
    181           "text": " If the value referenced by <code>pPhysicalDeviceCount</code> is not <code>0</code>, and <code>pPhysicalDevices</code> is not <code>NULL</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceCount</code> <code>VkPhysicalDevice</code> handles"
    182         }
    183       ]
    184     },
    185     "vkGetPhysicalDeviceProperties": {
    186       "core": [
    187         {
    188           "vuid": "VUID-vkGetPhysicalDeviceProperties-physicalDevice-parameter",
    189           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
    190         },
    191         {
    192           "vuid": "VUID-vkGetPhysicalDeviceProperties-pProperties-parameter",
    193           "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties</code> structure"
    194         }
    195       ]
    196     },
    197     "vkGetPhysicalDeviceProperties2": {
    198       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
    199         {
    200           "vuid": "VUID-vkGetPhysicalDeviceProperties2-physicalDevice-parameter",
    201           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
    202         },
    203         {
    204           "vuid": "VUID-vkGetPhysicalDeviceProperties2-pProperties-parameter",
    205           "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceProperties2</code> structure"
    206         }
    207       ]
    208     },
    209     "VkPhysicalDeviceProperties2": {
    210       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
    211         {
    212           "vuid": "VUID-VkPhysicalDeviceProperties2-sType-sType",
    213           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2</code>"
    214         },
    215         {
    216           "vuid": "VUID-VkPhysicalDeviceProperties2-pNext-pNext",
    217           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceConservativeRasterizationPropertiesEXT\">VkPhysicalDeviceConservativeRasterizationPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixPropertiesNV\">VkPhysicalDeviceCooperativeMatrixPropertiesNV</a>, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingPropertiesEXT\">VkPhysicalDeviceDescriptorIndexingPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>, <a href=\"#VkPhysicalDeviceDriverPropertiesKHR\">VkPhysicalDeviceDriverPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceExternalMemoryHostPropertiesEXT\">VkPhysicalDeviceExternalMemoryHostPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceFloatControlsPropertiesKHR\">VkPhysicalDeviceFloatControlsPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapPropertiesEXT\">VkPhysicalDeviceFragmentDensityMapPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceIDProperties\">VkPhysicalDeviceIDProperties</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockPropertiesEXT\">VkPhysicalDeviceInlineUniformBlockPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceMaintenance3Properties\">VkPhysicalDeviceMaintenance3Properties</a>, <a href=\"#VkPhysicalDeviceMeshShaderPropertiesNV\">VkPhysicalDeviceMeshShaderPropertiesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX\">VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX</a>, <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>, <a href=\"#VkPhysicalDevicePCIBusInfoPropertiesEXT\">VkPhysicalDevicePCIBusInfoPropertiesEXT</a>, <a href=\"#VkPhysicalDevicePointClippingProperties\">VkPhysicalDevicePointClippingProperties</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryProperties\">VkPhysicalDeviceProtectedMemoryProperties</a>, <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>, <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>, <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT\">VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT</a>, <a href=\"#VkPhysicalDeviceShaderCorePropertiesAMD\">VkPhysicalDeviceShaderCorePropertiesAMD</a>, <a href=\"#VkPhysicalDeviceShadingRateImagePropertiesNV\">VkPhysicalDeviceShadingRateImagePropertiesNV</a>, <a href=\"#VkPhysicalDeviceSubgroupProperties\">VkPhysicalDeviceSubgroupProperties</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>, or <a href=\"#VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT\">VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</a>"
    218         },
    219         {
    220           "vuid": "VUID-VkPhysicalDeviceProperties2-sType-unique",
    221           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
    222         }
    223       ]
    224     },
    225     "VkPhysicalDeviceIDProperties": {
    226       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities,VK_KHR_external_semaphore_capabilities,VK_KHR_external_fence_capabilities)": [
    227         {
    228           "vuid": "VUID-VkPhysicalDeviceIDProperties-sType-sType",
    229           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES</code>"
    230         }
    231       ]
    232     },
    233     "VkPhysicalDeviceDriverPropertiesKHR": {
    234       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_KHR_driver_properties)": [
    235         {
    236           "vuid": "VUID-VkPhysicalDeviceDriverPropertiesKHR-sType-sType",
    237           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR</code>"
    238         }
    239       ]
    240     },
    241     "VkPhysicalDevicePCIBusInfoPropertiesEXT": {
    242       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_pci_bus_info)": [
    243         {
    244           "vuid": "VUID-VkPhysicalDevicePCIBusInfoPropertiesEXT-sType-sType",
    245           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT</code>"
    246         }
    247       ]
    248     },
    249     "vkGetPhysicalDeviceQueueFamilyProperties": {
    250       "core": [
    251         {
    252           "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-physicalDevice-parameter",
    253           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
    254         },
    255         {
    256           "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyPropertyCount-parameter",
    257           "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
    258         },
    259         {
    260           "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties-pQueueFamilyProperties-parameter",
    261           "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties</code> structures"
    262         }
    263       ]
    264     },
    265     "vkGetPhysicalDeviceQueueFamilyProperties2": {
    266       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
    267         {
    268           "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-physicalDevice-parameter",
    269           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
    270         },
    271         {
    272           "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyPropertyCount-parameter",
    273           "text": " <code>pQueueFamilyPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
    274         },
    275         {
    276           "vuid": "VUID-vkGetPhysicalDeviceQueueFamilyProperties2-pQueueFamilyProperties-parameter",
    277           "text": " If the value referenced by <code>pQueueFamilyPropertyCount</code> is not <code>0</code>, and <code>pQueueFamilyProperties</code> is not <code>NULL</code>, <code>pQueueFamilyProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pQueueFamilyPropertyCount</code> <code>VkQueueFamilyProperties2</code> structures"
    278         }
    279       ]
    280     },
    281     "VkQueueFamilyProperties2": {
    282       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
    283         {
    284           "vuid": "VUID-VkQueueFamilyProperties2-sType-sType",
    285           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2</code>"
    286         },
    287         {
    288           "vuid": "VUID-VkQueueFamilyProperties2-pNext-pNext",
    289           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkQueueFamilyCheckpointPropertiesNV\">VkQueueFamilyCheckpointPropertiesNV</a>"
    290         }
    291       ]
    292     },
    293     "VkQueueFamilyCheckpointPropertiesNV": {
    294       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_NV_device_diagnostic_checkpoints)": [
    295         {
    296           "vuid": "VUID-VkQueueFamilyCheckpointPropertiesNV-sType-sType",
    297           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV</code>"
    298         }
    299       ]
    300     },
    301     "vkEnumeratePhysicalDeviceGroups": {
    302       "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
    303         {
    304           "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-instance-parameter",
    305           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
    306         },
    307         {
    308           "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupCount-parameter",
    309           "text": " <code>pPhysicalDeviceGroupCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
    310         },
    311         {
    312           "vuid": "VUID-vkEnumeratePhysicalDeviceGroups-pPhysicalDeviceGroupProperties-parameter",
    313           "text": " If the value referenced by <code>pPhysicalDeviceGroupCount</code> is not <code>0</code>, and <code>pPhysicalDeviceGroupProperties</code> is not <code>NULL</code>, <code>pPhysicalDeviceGroupProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPhysicalDeviceGroupCount</code> <code>VkPhysicalDeviceGroupProperties</code> structures"
    314         }
    315       ]
    316     },
    317     "VkPhysicalDeviceGroupProperties": {
    318       "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
    319         {
    320           "vuid": "VUID-VkPhysicalDeviceGroupProperties-sType-sType",
    321           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES</code>"
    322         },
    323         {
    324           "vuid": "VUID-VkPhysicalDeviceGroupProperties-pNext-pNext",
    325           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    326         }
    327       ]
    328     },
    329     "vkCreateDevice": {
    330       "core": [
    331         {
    332           "vuid": "VUID-vkCreateDevice-ppEnabledExtensionNames-01387",
    333           "text": " All <a href=\"#extendingvulkan-extensions-extensiondependencies\">required extensions</a> for each extension in the <a href=\"#VkDeviceCreateInfo\">VkDeviceCreateInfo</a>::<code>ppEnabledExtensionNames</code> list <strong class=\"purple\">must</strong> also be present in that list."
    334         },
    335         {
    336           "vuid": "VUID-vkCreateDevice-physicalDevice-parameter",
    337           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
    338         },
    339         {
    340           "vuid": "VUID-vkCreateDevice-pCreateInfo-parameter",
    341           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceCreateInfo</code> structure"
    342         },
    343         {
    344           "vuid": "VUID-vkCreateDevice-pAllocator-parameter",
    345           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
    346         },
    347         {
    348           "vuid": "VUID-vkCreateDevice-pDevice-parameter",
    349           "text": " <code>pDevice</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDevice</code> handle"
    350         }
    351       ]
    352     },
    353     "VkDeviceCreateInfo": {
    354       "core": [
    355         {
    356           "vuid": "VUID-VkDeviceCreateInfo-queueFamilyIndex-00372",
    357           "text": ""
    358         },
    359         {
    360           "vuid": "VUID-VkDeviceCreateInfo-sType-sType",
    361           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO</code>"
    362         },
    363         {
    364           "vuid": "VUID-VkDeviceCreateInfo-pNext-pNext",
    365           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>, <a href=\"#VkDeviceMemoryOverallocationCreateInfoAMD\">VkDeviceMemoryOverallocationCreateInfoAMD</a>, <a href=\"#VkPhysicalDevice16BitStorageFeatures\">VkPhysicalDevice16BitStorageFeatures</a>, <a href=\"#VkPhysicalDevice8BitStorageFeaturesKHR\">VkPhysicalDevice8BitStorageFeaturesKHR</a>, <a href=\"#VkPhysicalDeviceASTCDecodeFeaturesEXT\">VkPhysicalDeviceASTCDecodeFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT\">VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceBufferAddressFeaturesEXT\">VkPhysicalDeviceBufferAddressFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceComputeShaderDerivativesFeaturesNV\">VkPhysicalDeviceComputeShaderDerivativesFeaturesNV</a>, <a href=\"#VkPhysicalDeviceConditionalRenderingFeaturesEXT\">VkPhysicalDeviceConditionalRenderingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceCooperativeMatrixFeaturesNV\">VkPhysicalDeviceCooperativeMatrixFeaturesNV</a>, <a href=\"#VkPhysicalDeviceCornerSampledImageFeaturesNV\">VkPhysicalDeviceCornerSampledImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV\">VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV</a>, <a href=\"#VkPhysicalDeviceDepthClipEnableFeaturesEXT\">VkPhysicalDeviceDepthClipEnableFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceExclusiveScissorFeaturesNV\">VkPhysicalDeviceExclusiveScissorFeaturesNV</a>, <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a>, <a href=\"#VkPhysicalDeviceFloat16Int8FeaturesKHR\">VkPhysicalDeviceFloat16Int8FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceFragmentDensityMapFeaturesEXT\">VkPhysicalDeviceFragmentDensityMapFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV\">VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV</a>, <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMemoryPriorityFeaturesEXT\">VkPhysicalDeviceMemoryPriorityFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceMeshShaderFeaturesNV\">VkPhysicalDeviceMeshShaderFeaturesNV</a>, <a href=\"#VkPhysicalDeviceMultiviewFeatures\">VkPhysicalDeviceMultiviewFeatures</a>, <a href=\"#VkPhysicalDeviceProtectedMemoryFeatures\">VkPhysicalDeviceProtectedMemoryFeatures</a>, <a href=\"#VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV\">VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV</a>, <a href=\"#VkPhysicalDeviceSamplerYcbcrConversionFeatures\">VkPhysicalDeviceSamplerYcbcrConversionFeatures</a>, <a href=\"#VkPhysicalDeviceScalarBlockLayoutFeaturesEXT\">VkPhysicalDeviceScalarBlockLayoutFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceShaderAtomicInt64FeaturesKHR\">VkPhysicalDeviceShaderAtomicInt64FeaturesKHR</a>, <a href=\"#VkPhysicalDeviceShaderDrawParameterFeatures\">VkPhysicalDeviceShaderDrawParameterFeatures</a>, <a href=\"#VkPhysicalDeviceShaderImageFootprintFeaturesNV\">VkPhysicalDeviceShaderImageFootprintFeaturesNV</a>, <a href=\"#VkPhysicalDeviceShadingRateImageFeaturesNV\">VkPhysicalDeviceShadingRateImageFeaturesNV</a>, <a href=\"#VkPhysicalDeviceTransformFeedbackFeaturesEXT\">VkPhysicalDeviceTransformFeedbackFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVariablePointerFeatures\">VkPhysicalDeviceVariablePointerFeatures</a>, <a href=\"#VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT\">VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT</a>, <a href=\"#VkPhysicalDeviceVulkanMemoryModelFeaturesKHR\">VkPhysicalDeviceVulkanMemoryModelFeaturesKHR</a>, or <a href=\"#VkPhysicalDeviceYcbcrImageArraysFeaturesEXT\">VkPhysicalDeviceYcbcrImageArraysFeaturesEXT</a>"
    366         },
    367         {
    368           "vuid": "VUID-VkDeviceCreateInfo-sType-unique",
    369           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
    370         },
    371         {
    372           "vuid": "VUID-VkDeviceCreateInfo-flags-zerobitmask",
    373           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
    374         },
    375         {
    376           "vuid": "VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter",
    377           "text": " <code>pQueueCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCreateInfoCount</code> valid <code>VkDeviceQueueCreateInfo</code> structures"
    378         },
    379         {
    380           "vuid": "VUID-VkDeviceCreateInfo-ppEnabledLayerNames-parameter",
    381           "text": " If <code>enabledLayerCount</code> is not <code>0</code>, <code>ppEnabledLayerNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledLayerCount</code> null-terminated UTF-8 strings"
    382         },
    383         {
    384           "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-parameter",
    385           "text": " If <code>enabledExtensionCount</code> is not <code>0</code>, <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>enabledExtensionCount</code> null-terminated UTF-8 strings"
    386         },
    387         {
    388           "vuid": "VUID-VkDeviceCreateInfo-pEnabledFeatures-parameter",
    389           "text": " If <code>pEnabledFeatures</code> is not <code>NULL</code>, <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceFeatures</code> structure"
    390         },
    391         {
    392           "vuid": "VUID-VkDeviceCreateInfo-queueCreateInfoCount-arraylength",
    393           "text": " <code>queueCreateInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
    394         }
    395       ],
    396       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
    397         {
    398           "vuid": "VUID-VkDeviceCreateInfo-pNext-00373",
    399           "text": " If the <code>pNext</code> chain includes a <a href=\"#VkPhysicalDeviceFeatures2\">VkPhysicalDeviceFeatures2</a> structure, then <code>pEnabledFeatures</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    400         }
    401       ],
    402       "(VK_AMD_negative_viewport_height)+(VK_VERSION_1_1)": [
    403         {
    404           "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840",
    405           "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>"
    406         }
    407       ],
    408       "(VK_AMD_negative_viewport_height)+!(VK_VERSION_1_1)+(VK_KHR_maintenance1)": [
    409         {
    410           "vuid": "VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374",
    411           "text": " <code>ppEnabledExtensionNames</code> <strong class=\"purple\">must</strong> not contain both <code><a href=\"#VK_KHR_maintenance1\">VK_KHR_maintenance1</a></code> and <code><a href=\"#VK_AMD_negative_viewport_height\">VK_AMD_negative_viewport_height</a></code>"
    412         }
    413       ]
    414     },
    415     "VkDeviceGroupDeviceCreateInfo": {
    416       "(VK_VERSION_1_1,VK_KHR_device_group_creation)": [
    417         {
    418           "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00375",
    419           "text": " Each element of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be unique"
    420         },
    421         {
    422           "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-00376",
    423           "text": " All elements of <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be in the same device group as enumerated by <a href=\"#vkEnumeratePhysicalDeviceGroups\">vkEnumeratePhysicalDeviceGroups</a>"
    424         },
    425         {
    426           "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-physicalDeviceCount-00377",
    427           "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, the <code>physicalDevice</code> parameter of <a href=\"#vkCreateDevice\">vkCreateDevice</a> <strong class=\"purple\">must</strong> be an element of <code>pPhysicalDevices</code>."
    428         },
    429         {
    430           "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-sType-sType",
    431           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO</code>"
    432         },
    433         {
    434           "vuid": "VUID-VkDeviceGroupDeviceCreateInfo-pPhysicalDevices-parameter",
    435           "text": " If <code>physicalDeviceCount</code> is not <code>0</code>, <code>pPhysicalDevices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>physicalDeviceCount</code> valid <code>VkPhysicalDevice</code> handles"
    436         }
    437       ]
    438     },
    439     "VkDeviceMemoryOverallocationCreateInfoAMD": {
    440       "(VK_AMD_memory_overallocation_behavior)": [
    441         {
    442           "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType",
    443           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD</code>"
    444         },
    445         {
    446           "vuid": "VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter",
    447           "text": " <code>overallocationBehavior</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkMemoryOverallocationBehaviorAMD\">VkMemoryOverallocationBehaviorAMD</a> value"
    448         }
    449       ]
    450     },
    451     "vkDestroyDevice": {
    452       "core": [
    453         {
    454           "vuid": "VUID-vkDestroyDevice-device-00378",
    455           "text": " All child objects created on <code>device</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>device</code>"
    456         },
    457         {
    458           "vuid": "VUID-vkDestroyDevice-device-00379",
    459           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
    460         },
    461         {
    462           "vuid": "VUID-vkDestroyDevice-device-00380",
    463           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>device</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    464         },
    465         {
    466           "vuid": "VUID-vkDestroyDevice-device-parameter",
    467           "text": " If <code>device</code> is not <code>NULL</code>, <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    468         },
    469         {
    470           "vuid": "VUID-vkDestroyDevice-pAllocator-parameter",
    471           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
    472         }
    473       ]
    474     },
    475     "VkDeviceQueueCreateInfo": {
    476       "core": [
    477         {
    478           "vuid": "VUID-VkDeviceQueueCreateInfo-queueFamilyIndex-00381",
    479           "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code>"
    480         },
    481         {
    482           "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-00382",
    483           "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>queueCount</code> member of the <code>VkQueueFamilyProperties</code> structure, as returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> in the <code>pQueueFamilyProperties</code>[<code>queueFamilyIndex</code>]"
    484         },
    485         {
    486           "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-00383",
    487           "text": " Each element of <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code> inclusive"
    488         },
    489         {
    490           "vuid": "VUID-VkDeviceQueueCreateInfo-sType-sType",
    491           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO</code>"
    492         },
    493         {
    494           "vuid": "VUID-VkDeviceQueueCreateInfo-pNext-pNext",
    495           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceQueueGlobalPriorityCreateInfoEXT\">VkDeviceQueueGlobalPriorityCreateInfoEXT</a>"
    496         },
    497         {
    498           "vuid": "VUID-VkDeviceQueueCreateInfo-flags-parameter",
    499           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
    500         },
    501         {
    502           "vuid": "VUID-VkDeviceQueueCreateInfo-pQueuePriorities-parameter",
    503           "text": " <code>pQueuePriorities</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueCount</code> <code>float</code> values"
    504         },
    505         {
    506           "vuid": "VUID-VkDeviceQueueCreateInfo-queueCount-arraylength",
    507           "text": " <code>queueCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
    508         }
    509       ]
    510     },
    511     "VkDeviceQueueGlobalPriorityCreateInfoEXT": {
    512       "(VK_EXT_global_priority)": [
    513         {
    514           "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-sType-sType",
    515           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT</code>"
    516         },
    517         {
    518           "vuid": "VUID-VkDeviceQueueGlobalPriorityCreateInfoEXT-globalPriority-parameter",
    519           "text": " <code>globalPriority</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueueGlobalPriorityEXT\">VkQueueGlobalPriorityEXT</a> value"
    520         }
    521       ]
    522     },
    523     "vkGetDeviceQueue": {
    524       "core": [
    525         {
    526           "vuid": "VUID-vkGetDeviceQueue-queueFamilyIndex-00384",
    527           "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure"
    528         },
    529         {
    530           "vuid": "VUID-vkGetDeviceQueue-queueIndex-00385",
    531           "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure"
    532         },
    533         {
    534           "vuid": "VUID-vkGetDeviceQueue-flags-01841",
    535           "text": " <a href=\"#VkDeviceQueueCreateInfo\">VkDeviceQueueCreateInfo</a>::<code>flags</code> <strong class=\"purple\">must</strong> have been set to zero when <code>device</code> was created"
    536         },
    537         {
    538           "vuid": "VUID-vkGetDeviceQueue-device-parameter",
    539           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    540         },
    541         {
    542           "vuid": "VUID-vkGetDeviceQueue-pQueue-parameter",
    543           "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle"
    544         }
    545       ]
    546     },
    547     "vkGetDeviceQueue2": {
    548       "(VK_VERSION_1_1)": [
    549         {
    550           "vuid": "VUID-vkGetDeviceQueue2-device-parameter",
    551           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    552         },
    553         {
    554           "vuid": "VUID-vkGetDeviceQueue2-pQueueInfo-parameter",
    555           "text": " <code>pQueueInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceQueueInfo2</code> structure"
    556         },
    557         {
    558           "vuid": "VUID-vkGetDeviceQueue2-pQueue-parameter",
    559           "text": " <code>pQueue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueue</code> handle"
    560         }
    561       ]
    562     },
    563     "VkDeviceQueueInfo2": {
    564       "(VK_VERSION_1_1)": [
    565         {
    566           "vuid": "VUID-VkDeviceQueueInfo2-queueFamilyIndex-01842",
    567           "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be one of the queue family indices specified when <code>device</code> was created, via the <code>VkDeviceQueueCreateInfo</code> structure"
    568         },
    569         {
    570           "vuid": "VUID-VkDeviceQueueInfo2-queueIndex-01843",
    571           "text": " <code>queueIndex</code> <strong class=\"purple\">must</strong> be less than the number of queues created for the specified queue family index and <a href=\"#VkDeviceQueueCreateFlags\">VkDeviceQueueCreateFlags</a> member <code>flags</code> equal to this <code>flags</code> value when <code>device</code> was created, via the <code>queueCount</code> member of the <code>VkDeviceQueueCreateInfo</code> structure"
    572         },
    573         {
    574           "vuid": "VUID-VkDeviceQueueInfo2-sType-sType",
    575           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2</code>"
    576         },
    577         {
    578           "vuid": "VUID-VkDeviceQueueInfo2-pNext-pNext",
    579           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    580         },
    581         {
    582           "vuid": "VUID-VkDeviceQueueInfo2-flags-parameter",
    583           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceQueueCreateFlagBits\">VkDeviceQueueCreateFlagBits</a> values"
    584         },
    585         {
    586           "vuid": "VUID-VkDeviceQueueInfo2-flags-requiredbitmask",
    587           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
    588         }
    589       ]
    590     },
    591     "vkCreateCommandPool": {
    592       "core": [
    593         {
    594           "vuid": "VUID-vkCreateCommandPool-queueFamilyIndex-01937",
    595           "text": " <code>pCreateInfo</code>::<code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be the index of a queue family available in the logical device <code>device</code>."
    596         },
    597         {
    598           "vuid": "VUID-vkCreateCommandPool-device-parameter",
    599           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    600         },
    601         {
    602           "vuid": "VUID-vkCreateCommandPool-pCreateInfo-parameter",
    603           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandPoolCreateInfo</code> structure"
    604         },
    605         {
    606           "vuid": "VUID-vkCreateCommandPool-pAllocator-parameter",
    607           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
    608         },
    609         {
    610           "vuid": "VUID-vkCreateCommandPool-pCommandPool-parameter",
    611           "text": " <code>pCommandPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkCommandPool</code> handle"
    612         }
    613       ]
    614     },
    615     "VkCommandPoolCreateInfo": {
    616       "core": [
    617         {
    618           "vuid": "VUID-VkCommandPoolCreateInfo-sType-sType",
    619           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO</code>"
    620         },
    621         {
    622           "vuid": "VUID-VkCommandPoolCreateInfo-pNext-pNext",
    623           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    624         },
    625         {
    626           "vuid": "VUID-VkCommandPoolCreateInfo-flags-parameter",
    627           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolCreateFlagBits\">VkCommandPoolCreateFlagBits</a> values"
    628         }
    629       ]
    630     },
    631     "vkTrimCommandPool": {
    632       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
    633         {
    634           "vuid": "VUID-vkTrimCommandPool-device-parameter",
    635           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    636         },
    637         {
    638           "vuid": "VUID-vkTrimCommandPool-commandPool-parameter",
    639           "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
    640         },
    641         {
    642           "vuid": "VUID-vkTrimCommandPool-flags-zerobitmask",
    643           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
    644         },
    645         {
    646           "vuid": "VUID-vkTrimCommandPool-commandPool-parent",
    647           "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
    648         }
    649       ]
    650     },
    651     "vkResetCommandPool": {
    652       "core": [
    653         {
    654           "vuid": "VUID-vkResetCommandPool-commandPool-00040",
    655           "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
    656         },
    657         {
    658           "vuid": "VUID-vkResetCommandPool-device-parameter",
    659           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    660         },
    661         {
    662           "vuid": "VUID-vkResetCommandPool-commandPool-parameter",
    663           "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
    664         },
    665         {
    666           "vuid": "VUID-vkResetCommandPool-flags-parameter",
    667           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandPoolResetFlagBits\">VkCommandPoolResetFlagBits</a> values"
    668         },
    669         {
    670           "vuid": "VUID-vkResetCommandPool-commandPool-parent",
    671           "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
    672         }
    673       ]
    674     },
    675     "vkDestroyCommandPool": {
    676       "core": [
    677         {
    678           "vuid": "VUID-vkDestroyCommandPool-commandPool-00041",
    679           "text": " All <code>VkCommandBuffer</code> objects allocated from <code>commandPool</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
    680         },
    681         {
    682           "vuid": "VUID-vkDestroyCommandPool-commandPool-00042",
    683           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
    684         },
    685         {
    686           "vuid": "VUID-vkDestroyCommandPool-commandPool-00043",
    687           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>commandPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    688         },
    689         {
    690           "vuid": "VUID-vkDestroyCommandPool-device-parameter",
    691           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    692         },
    693         {
    694           "vuid": "VUID-vkDestroyCommandPool-commandPool-parameter",
    695           "text": " If <code>commandPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
    696         },
    697         {
    698           "vuid": "VUID-vkDestroyCommandPool-pAllocator-parameter",
    699           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
    700         },
    701         {
    702           "vuid": "VUID-vkDestroyCommandPool-commandPool-parent",
    703           "text": " If <code>commandPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
    704         }
    705       ]
    706     },
    707     "vkAllocateCommandBuffers": {
    708       "core": [
    709         {
    710           "vuid": "VUID-vkAllocateCommandBuffers-device-parameter",
    711           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    712         },
    713         {
    714           "vuid": "VUID-vkAllocateCommandBuffers-pAllocateInfo-parameter",
    715           "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferAllocateInfo</code> structure"
    716         },
    717         {
    718           "vuid": "VUID-vkAllocateCommandBuffers-pCommandBuffers-parameter",
    719           "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::commandBufferCount <code>VkCommandBuffer</code> handles"
    720         }
    721       ]
    722     },
    723     "VkCommandBufferAllocateInfo": {
    724       "core": [
    725         {
    726           "vuid": "VUID-VkCommandBufferAllocateInfo-commandBufferCount-00044",
    727           "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
    728         },
    729         {
    730           "vuid": "VUID-VkCommandBufferAllocateInfo-sType-sType",
    731           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO</code>"
    732         },
    733         {
    734           "vuid": "VUID-VkCommandBufferAllocateInfo-pNext-pNext",
    735           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
    736         },
    737         {
    738           "vuid": "VUID-VkCommandBufferAllocateInfo-commandPool-parameter",
    739           "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
    740         },
    741         {
    742           "vuid": "VUID-VkCommandBufferAllocateInfo-level-parameter",
    743           "text": " <code>level</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCommandBufferLevel\">VkCommandBufferLevel</a> value"
    744         }
    745       ]
    746     },
    747     "vkResetCommandBuffer": {
    748       "core": [
    749         {
    750           "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00045",
    751           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
    752         },
    753         {
    754           "vuid": "VUID-vkResetCommandBuffer-commandBuffer-00046",
    755           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated from a pool that was created with the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code>"
    756         },
    757         {
    758           "vuid": "VUID-vkResetCommandBuffer-commandBuffer-parameter",
    759           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
    760         },
    761         {
    762           "vuid": "VUID-vkResetCommandBuffer-flags-parameter",
    763           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferResetFlagBits\">VkCommandBufferResetFlagBits</a> values"
    764         }
    765       ]
    766     },
    767     "vkFreeCommandBuffers": {
    768       "core": [
    769         {
    770           "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00047",
    771           "text": " All elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
    772         },
    773         {
    774           "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-00048",
    775           "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>VkCommandBuffer</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <code>NULL</code>"
    776         },
    777         {
    778           "vuid": "VUID-vkFreeCommandBuffers-device-parameter",
    779           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
    780         },
    781         {
    782           "vuid": "VUID-vkFreeCommandBuffers-commandPool-parameter",
    783           "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandPool</code> handle"
    784         },
    785         {
    786           "vuid": "VUID-vkFreeCommandBuffers-commandBufferCount-arraylength",
    787           "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
    788         },
    789         {
    790           "vuid": "VUID-vkFreeCommandBuffers-commandPool-parent",
    791           "text": " <code>commandPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
    792         },
    793         {
    794           "vuid": "VUID-vkFreeCommandBuffers-pCommandBuffers-parent",
    795           "text": " Each element of <code>pCommandBuffers</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>commandPool</code>"
    796         }
    797       ]
    798     },
    799     "vkBeginCommandBuffer": {
    800       "core": [
    801         {
    802           "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00049",
    803           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">recording or pending state</a>."
    804         },
    805         {
    806           "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00050",
    807           "text": " If <code>commandBuffer</code> was allocated from a <a href=\"#VkCommandPool\">VkCommandPool</a> which did not have the <code>VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT</code> flag set, <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">initial state</a>."
    808         },
    809         {
    810           "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00051",
    811           "text": " If <code>commandBuffer</code> is a secondary command buffer, the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBufferInheritanceInfo</code> structure"
    812         },
    813         {
    814           "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-00052",
    815           "text": " If <code>commandBuffer</code> is a secondary command buffer and either the <code>occlusionQueryEnable</code> member of the <code>pInheritanceInfo</code> member of <code>pBeginInfo</code> is <code>VK_FALSE</code>, or the precise occlusion queries feature is not enabled, the <code>queryFlags</code> member of the <code>pInheritanceInfo</code> member <code>pBeginInfo</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>"
    816         },
    817         {
    818           "vuid": "VUID-vkBeginCommandBuffer-commandBuffer-parameter",
    819           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
    820         },
    821         {
    822           "vuid": "VUID-vkBeginCommandBuffer-pBeginInfo-parameter",
    823           "text": " <code>pBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCommandBufferBeginInfo</code> structure"
    824         }
    825       ]
    826     },
    827     "VkCommandBufferBeginInfo": {
    828       "core": [
    829         {
    830           "vuid": "VUID-VkCommandBufferBeginInfo-flags-00053",
    831           "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>renderPass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code>"
    832         },
    833         {
    834           "vuid": "VUID-VkCommandBufferBeginInfo-flags-00054",
    835           "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>subpass</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be a valid subpass index within the <code>renderPass</code> member of <code>pInheritanceInfo</code>"
    836         },
    837         {
    838           "vuid": "VUID-VkCommandBufferBeginInfo-flags-00055",
    839           "text": " If <code>flags</code> contains <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>, the <code>framebuffer</code> member of <code>pInheritanceInfo</code> <strong class=\"purple\">must</strong> be either <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, or a valid <code>VkFramebuffer</code> that is compatible with the <code>renderPass</code> member of <code>pInheritanceInfo</code>"
    840         },
    841         {
    842           "vuid": "VUID-VkCommandBufferBeginInfo-sType-sType",
    843           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO</code>"
    844         },
    845         {
    846           "vuid": "VUID-VkCommandBufferBeginInfo-pNext-pNext",
    847           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>"
    848         },
    849         {
    850           "vuid": "VUID-VkCommandBufferBeginInfo-flags-parameter",
    851           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCommandBufferUsageFlagBits\">VkCommandBufferUsageFlagBits</a> values"
    852         }
    853       ]
    854     },
    855     "VkCommandBufferInheritanceInfo": {
    856       "core": [
    857         {
    858           "vuid": "VUID-VkCommandBufferInheritanceInfo-occlusionQueryEnable-00056",
    859           "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>occlusionQueryEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
    860         },
    861         {
    862           "vuid": "VUID-VkCommandBufferInheritanceInfo-queryFlags-00057",
    863           "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is enabled, <code>queryFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
    864         },
    865         {
    866           "vuid": "VUID-VkCommandBufferInheritanceInfo-pipelineStatistics-00058",
    867           "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be <code>0</code>"
    868         },
    869         {
    870           "vuid": "VUID-VkCommandBufferInheritanceInfo-sType-sType",
    871           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO</code>"
    872         },
    873         {
    874           "vuid": "VUID-VkCommandBufferInheritanceInfo-pNext-pNext",
    875           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkCommandBufferInheritanceConditionalRenderingInfoEXT\">VkCommandBufferInheritanceConditionalRenderingInfoEXT</a>"
    876         },
    877         {
    878           "vuid": "VUID-VkCommandBufferInheritanceInfo-commonparent",
    879           "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
    880         }
    881       ]
    882     },
    883     "VkCommandBufferInheritanceConditionalRenderingInfoEXT": {
    884       "(VK_EXT_conditional_rendering)": [
    885         {
    886           "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-conditionalRenderingEnable-01977",
    887           "text": " If the <a href=\"#features-inheritedConditionalRendering\">inherited conditional rendering</a> feature is not enabled, <code>conditionalRenderingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
    888         },
    889         {
    890           "vuid": "VUID-VkCommandBufferInheritanceConditionalRenderingInfoEXT-sType-sType",
    891           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT</code>"
    892         }
    893       ]
    894     },
    895     "vkEndCommandBuffer": {
    896       "core": [
    897         {
    898           "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00059",
    899           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>."
    900         },
    901         {
    902           "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00060",
    903           "text": " If <code>commandBuffer</code> is a primary command buffer, there <strong class=\"purple\">must</strong> not be an active render pass instance"
    904         },
    905         {
    906           "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00061",
    907           "text": " All queries made <a href=\"#queries-operation-active\">active</a> during the recording of <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been made inactive"
    908         },
    909         {
    910           "vuid": "VUID-vkEndCommandBuffer-commandBuffer-parameter",
    911           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
    912         }
    913       ],
    914       "(VK_EXT_conditional_rendering)": [
    915         {
    916           "vuid": "VUID-vkEndCommandBuffer-None-01978",
    917           "text": " Conditional rendering must not be <a href=\"#active-conditional-rendering\">active</a>"
    918         }
    919       ],
    920       "(VK_EXT_debug_utils)": [
    921         {
    922           "vuid": "VUID-vkEndCommandBuffer-commandBuffer-01815",
    923           "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdBeginDebugUtilsLabelEXT\">vkCmdBeginDebugUtilsLabelEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdEndDebugUtilsLabelEXT\">vkCmdEndDebugUtilsLabelEXT</a>."
    924         }
    925       ],
    926       "(VK_EXT_debug_marker)": [
    927         {
    928           "vuid": "VUID-vkEndCommandBuffer-commandBuffer-00062",
    929           "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> not be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>."
    930         }
    931       ]
    932     },
    933     "vkQueueSubmit": {
    934       "core": [
    935         {
    936           "vuid": "VUID-vkQueueSubmit-fence-00063",
    937           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled"
    938         },
    939         {
    940           "vuid": "VUID-vkQueueSubmit-fence-00064",
    941           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
    942         },
    943         {
    944           "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00065",
    945           "text": " Any calls to <a href=\"#vkCmdSetEvent\">vkCmdSetEvent</a>, <a href=\"#vkCmdResetEvent\">vkCmdResetEvent</a> or <a href=\"#vkCmdWaitEvents\">vkCmdWaitEvents</a> that have been recorded into any of the command buffer elements of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code>, <strong class=\"purple\">must</strong> not reference any <a href=\"#VkEvent\">VkEvent</a> that is referenced by any of those commands in a command buffer that has been submitted to another queue and is still in the <em>pending state</em>."
    946         },
    947         {
    948           "vuid": "VUID-vkQueueSubmit-pWaitDstStageMask-00066",
    949           "text": " Any stage flag included in any element of the <code>pWaitDstStageMask</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be a pipeline stage supported by one of the capabilities of <code>queue</code>, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>."
    950         },
    951         {
    952           "vuid": "VUID-vkQueueSubmit-pSignalSemaphores-00067",
    953           "text": " Each element of the <code>pSignalSemaphores</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device"
    954         },
    955         {
    956           "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00068",
    957           "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pSubmits</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
    958         },
    959         {
    960           "vuid": "VUID-vkQueueSubmit-pWaitSemaphores-00069",
    961           "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pSubmits</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution."
    962         },
    963         {
    964           "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00070",
    965           "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>."
    966         },
    967         {
    968           "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00071",
    969           "text": " If any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
    970         },
    971         {
    972           "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00072",
    973           "text": " Any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>."
    974         },
    975         {
    976           "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00073",
    977           "text": " If any <a href=\"#commandbuffers-secondary\">secondary command buffers recorded</a> into any element of the <code>pCommandBuffers</code> member of any element of <code>pSubmits</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code>, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
    978         },
    979         {
    980           "vuid": "VUID-vkQueueSubmit-pCommandBuffers-00074",
    981           "text": " Each element of the <code>pCommandBuffers</code> member of each element of <code>pSubmits</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family <code>queue</code> belongs to."
    982         },
    983         {
    984           "vuid": "VUID-vkQueueSubmit-pSubmits-02207",
    985           "text": " If any element of <code>pSubmits</code>&#8594;<code>pCommandBuffers</code> includes a <a href=\"#synchronization-queue-transfers-acquire\">Queue Family Transfer Acquire Operation</a>, there <strong class=\"purple\">must</strong> exist a previously submitted <a href=\"#synchronization-queue-transfers-release\">Queue Family Transfer Release Operation</a> on a queue in the queue family identified by the acquire operation, with parameters matching the acquire operation as defined in the definition of such <a href=\"#synchronization-queue-transfers-acquire\">acquire operations</a>, and which happens before the acquire operation."
    986         },
    987         {
    988           "vuid": "VUID-vkQueueSubmit-queue-parameter",
    989           "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
    990         },
    991         {
    992           "vuid": "VUID-vkQueueSubmit-pSubmits-parameter",
    993           "text": " If <code>submitCount</code> is not <code>0</code>, <code>pSubmits</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>submitCount</code> valid <code>VkSubmitInfo</code> structures"
    994         },
    995         {
    996           "vuid": "VUID-vkQueueSubmit-fence-parameter",
    997           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
    998         },
    999         {
   1000           "vuid": "VUID-vkQueueSubmit-commonparent",
   1001           "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   1002         }
   1003       ]
   1004     },
   1005     "VkSubmitInfo": {
   1006       "core": [
   1007         {
   1008           "vuid": "VUID-VkSubmitInfo-pCommandBuffers-00075",
   1009           "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been allocated with <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
   1010         },
   1011         {
   1012           "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00076",
   1013           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   1014         },
   1015         {
   1016           "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00077",
   1017           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   1018         },
   1019         {
   1020           "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-00078",
   1021           "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>."
   1022         },
   1023         {
   1024           "vuid": "VUID-VkSubmitInfo-sType-sType",
   1025           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBMIT_INFO</code>"
   1026         },
   1027         {
   1028           "vuid": "VUID-VkSubmitInfo-pNext-pNext",
   1029           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkD3D12FenceSubmitInfoKHR\">VkD3D12FenceSubmitInfoKHR</a>, <a href=\"#VkDeviceGroupSubmitInfo\">VkDeviceGroupSubmitInfo</a>, <a href=\"#VkProtectedSubmitInfo\">VkProtectedSubmitInfo</a>, <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoKHR\">VkWin32KeyedMutexAcquireReleaseInfoKHR</a>, or <a href=\"#VkWin32KeyedMutexAcquireReleaseInfoNV\">VkWin32KeyedMutexAcquireReleaseInfoNV</a>"
   1030         },
   1031         {
   1032           "vuid": "VUID-VkSubmitInfo-sType-unique",
   1033           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   1034         },
   1035         {
   1036           "vuid": "VUID-VkSubmitInfo-pWaitSemaphores-parameter",
   1037           "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
   1038         },
   1039         {
   1040           "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-parameter",
   1041           "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid combinations of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   1042         },
   1043         {
   1044           "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-requiredbitmask",
   1045           "text": " Each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   1046         },
   1047         {
   1048           "vuid": "VUID-VkSubmitInfo-pCommandBuffers-parameter",
   1049           "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles"
   1050         },
   1051         {
   1052           "vuid": "VUID-VkSubmitInfo-pSignalSemaphores-parameter",
   1053           "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
   1054         },
   1055         {
   1056           "vuid": "VUID-VkSubmitInfo-commonparent",
   1057           "text": " Each of the elements of <code>pCommandBuffers</code>, the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   1058         }
   1059       ],
   1060       "(VK_NV_mesh_shader)": [
   1061         {
   1062           "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02089",
   1063           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   1064         },
   1065         {
   1066           "vuid": "VUID-VkSubmitInfo-pWaitDstStageMask-02090",
   1067           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, each element of <code>pWaitDstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   1068         }
   1069       ]
   1070     },
   1071     "VkD3D12FenceSubmitInfoKHR": {
   1072       "(VK_KHR_external_semaphore_win32)": [
   1073         {
   1074           "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079",
   1075           "text": " <code>waitSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>waitSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure."
   1076         },
   1077         {
   1078           "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080",
   1079           "text": " <code>signalSemaphoreValuesCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkSubmitInfo</code>::<code>signalSemaphoreCount</code>, where <code>VkSubmitInfo</code> is in the <code>pNext</code> chain of this <code>VkD3D12FenceSubmitInfoKHR</code> structure."
   1080         },
   1081         {
   1082           "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-sType-sType",
   1083           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR</code>"
   1084         },
   1085         {
   1086           "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter",
   1087           "text": " If <code>waitSemaphoreValuesCount</code> is not <code>0</code>, and <code>pWaitSemaphoreValues</code> is not <code>NULL</code>, <code>pWaitSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreValuesCount</code> <code>uint64_t</code> values"
   1088         },
   1089         {
   1090           "vuid": "VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter",
   1091           "text": " If <code>signalSemaphoreValuesCount</code> is not <code>0</code>, and <code>pSignalSemaphoreValues</code> is not <code>NULL</code>, <code>pSignalSemaphoreValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreValuesCount</code> <code>uint64_t</code> values"
   1092         }
   1093       ]
   1094     },
   1095     "VkWin32KeyedMutexAcquireReleaseInfoKHR": {
   1096       "(VK_KHR_win32_keyed_mutex)": [
   1097         {
   1098           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-00081",
   1099           "text": " Each member of <code>pAcquireSyncs</code> and <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a device memory object imported by setting <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>::<code>handleType</code> to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>."
   1100         },
   1101         {
   1102           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-sType-sType",
   1103           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR</code>"
   1104         },
   1105         {
   1106           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireSyncs-parameter",
   1107           "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles"
   1108         },
   1109         {
   1110           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireKeys-parameter",
   1111           "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values"
   1112         },
   1113         {
   1114           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pAcquireTimeouts-parameter",
   1115           "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values"
   1116         },
   1117         {
   1118           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseSyncs-parameter",
   1119           "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles"
   1120         },
   1121         {
   1122           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-pReleaseKeys-parameter",
   1123           "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values"
   1124         },
   1125         {
   1126           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoKHR-commonparent",
   1127           "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   1128         }
   1129       ]
   1130     },
   1131     "VkWin32KeyedMutexAcquireReleaseInfoNV": {
   1132       "(VK_NV_win32_keyed_mutex)": [
   1133         {
   1134           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-sType-sType",
   1135           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV</code>"
   1136         },
   1137         {
   1138           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireSyncs-parameter",
   1139           "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> valid <code>VkDeviceMemory</code> handles"
   1140         },
   1141         {
   1142           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireKeys-parameter",
   1143           "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint64_t</code> values"
   1144         },
   1145         {
   1146           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pAcquireTimeoutMilliseconds-parameter",
   1147           "text": " If <code>acquireCount</code> is not <code>0</code>, <code>pAcquireTimeoutMilliseconds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>acquireCount</code> <code>uint32_t</code> values"
   1148         },
   1149         {
   1150           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseSyncs-parameter",
   1151           "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseSyncs</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> valid <code>VkDeviceMemory</code> handles"
   1152         },
   1153         {
   1154           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-pReleaseKeys-parameter",
   1155           "text": " If <code>releaseCount</code> is not <code>0</code>, <code>pReleaseKeys</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>releaseCount</code> <code>uint64_t</code> values"
   1156         },
   1157         {
   1158           "vuid": "VUID-VkWin32KeyedMutexAcquireReleaseInfoNV-commonparent",
   1159           "text": " Both of the elements of <code>pAcquireSyncs</code>, and the elements of <code>pReleaseSyncs</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   1160         }
   1161       ]
   1162     },
   1163     "VkProtectedSubmitInfo": {
   1164       "(VK_VERSION_1_1)": [
   1165         {
   1166           "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01816",
   1167           "text": " If the protected memory feature is not enabled, <code>protectedSubmit</code> <strong class=\"purple\">must</strong> not be <code>VK_TRUE</code>."
   1168         },
   1169         {
   1170           "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01817",
   1171           "text": " If <code>protectedSubmit</code> is <code>VK_TRUE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be a protected command buffer."
   1172         },
   1173         {
   1174           "vuid": "VUID-VkProtectedSubmitInfo-protectedSubmit-01818",
   1175           "text": " If <code>protectedSubmit</code> is <code>VK_FALSE</code>, then each element of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer."
   1176         },
   1177         {
   1178           "vuid": "VUID-VkProtectedSubmitInfo-pNext-01819",
   1179           "text": " If the <code>VkSubmitInfo</code>::<code>pNext</code> chain does not include a <code>VkProtectedSubmitInfo</code> structure, then each element of the command buffer of the <code>pCommandBuffers</code> array <strong class=\"purple\">must</strong> be an unprotected command buffer."
   1180         },
   1181         {
   1182           "vuid": "VUID-VkProtectedSubmitInfo-sType-sType",
   1183           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO</code>"
   1184         }
   1185       ]
   1186     },
   1187     "VkDeviceGroupSubmitInfo": {
   1188       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   1189         {
   1190           "vuid": "VUID-VkDeviceGroupSubmitInfo-waitSemaphoreCount-00082",
   1191           "text": " <code>waitSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>waitSemaphoreCount</code>"
   1192         },
   1193         {
   1194           "vuid": "VUID-VkDeviceGroupSubmitInfo-commandBufferCount-00083",
   1195           "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>commandBufferCount</code>"
   1196         },
   1197         {
   1198           "vuid": "VUID-VkDeviceGroupSubmitInfo-signalSemaphoreCount-00084",
   1199           "text": " <code>signalSemaphoreCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkSubmitInfo\">VkSubmitInfo</a>::<code>signalSemaphoreCount</code>"
   1200         },
   1201         {
   1202           "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-00085",
   1203           "text": " All elements of <code>pWaitSemaphoreDeviceIndices</code> and <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
   1204         },
   1205         {
   1206           "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-00086",
   1207           "text": " All elements of <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be valid device masks"
   1208         },
   1209         {
   1210           "vuid": "VUID-VkDeviceGroupSubmitInfo-sType-sType",
   1211           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO</code>"
   1212         },
   1213         {
   1214           "vuid": "VUID-VkDeviceGroupSubmitInfo-pWaitSemaphoreDeviceIndices-parameter",
   1215           "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> <code>uint32_t</code> values"
   1216         },
   1217         {
   1218           "vuid": "VUID-VkDeviceGroupSubmitInfo-pCommandBufferDeviceMasks-parameter",
   1219           "text": " If <code>commandBufferCount</code> is not <code>0</code>, <code>pCommandBufferDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> <code>uint32_t</code> values"
   1220         },
   1221         {
   1222           "vuid": "VUID-VkDeviceGroupSubmitInfo-pSignalSemaphoreDeviceIndices-parameter",
   1223           "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphoreDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> <code>uint32_t</code> values"
   1224         }
   1225       ]
   1226     },
   1227     "vkCmdExecuteCommands": {
   1228       "core": [
   1229         {
   1230           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00087",
   1231           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_PRIMARY</code>"
   1232         },
   1233         {
   1234           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00088",
   1235           "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated with a <code>level</code> of <code>VK_COMMAND_BUFFER_LEVEL_SECONDARY</code>"
   1236         },
   1237         {
   1238           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00089",
   1239           "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">pending or executable state</a>."
   1240         },
   1241         {
   1242           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00090",
   1243           "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, and it was recorded into any other primary command buffer, that primary command buffer <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>"
   1244         },
   1245         {
   1246           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00091",
   1247           "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not be in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
   1248         },
   1249         {
   1250           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00092",
   1251           "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not have already been recorded to <code>commandBuffer</code>."
   1252         },
   1253         {
   1254           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00093",
   1255           "text": " If any element of <code>pCommandBuffers</code> was not recorded with the <code>VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT</code> flag, it <strong class=\"purple\">must</strong> not appear more than once in <code>pCommandBuffers</code>."
   1256         },
   1257         {
   1258           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00094",
   1259           "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been allocated from a <code>VkCommandPool</code> that was created for the same queue family as the <code>VkCommandPool</code> from which <code>commandBuffer</code> was allocated"
   1260         },
   1261         {
   1262           "vuid": "VUID-vkCmdExecuteCommands-contents-00095",
   1263           "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, that render pass instance <strong class=\"purple\">must</strong> have been begun with the <code>contents</code> parameter of <code>vkCmdBeginRenderPass</code> set to <code>VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS</code>"
   1264         },
   1265         {
   1266           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00096",
   1267           "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>"
   1268         },
   1269         {
   1270           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00097",
   1271           "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>subpass</code> set to the index of the subpass which the given command buffer will be executed in"
   1272         },
   1273         {
   1274           "vuid": "VUID-vkCmdExecuteCommands-pInheritanceInfo-00098",
   1275           "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, the render passes specified in the <code>pBeginInfo</code>::<code>pInheritanceInfo</code>::<code>renderPass</code> members of the <a href=\"#vkBeginCommandBuffer\">vkBeginCommandBuffer</a> commands used to begin recording each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the current render pass."
   1276         },
   1277         {
   1278           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00099",
   1279           "text": " If <code>vkCmdExecuteCommands</code> is being called within a render pass instance, and any element of <code>pCommandBuffers</code> was recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>framebuffer</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, that <code>VkFramebuffer</code> <strong class=\"purple\">must</strong> match the <code>VkFramebuffer</code> used in the current render pass instance"
   1280         },
   1281         {
   1282           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00100",
   1283           "text": " If <code>vkCmdExecuteCommands</code> is not being called within a render pass instance, each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not have been recorded with the <code>VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT</code>"
   1284         },
   1285         {
   1286           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00101",
   1287           "text": " If the <a href=\"#features-inheritedQueries\">inherited queries</a> feature is not enabled, <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have any queries <a href=\"#queries-operation-active\">active</a>"
   1288         },
   1289         {
   1290           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00102",
   1291           "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>occlusionQueryEnable</code> set to <code>VK_TRUE</code>"
   1292         },
   1293         {
   1294           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00103",
   1295           "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_OCCLUSION</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>queryFlags</code> having all bits set that are set for the query"
   1296         },
   1297         {
   1298           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-00104",
   1299           "text": " If <code>commandBuffer</code> has a <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> query <a href=\"#queries-operation-active\">active</a>, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been recorded with <code>VkCommandBufferInheritanceInfo</code>::<code>pipelineStatistics</code> having all bits set that are set in the <code>VkQueryPool</code> the query uses"
   1300         },
   1301         {
   1302           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-00105",
   1303           "text": " Each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> not begin any query types that are <a href=\"#queries-operation-active\">active</a> in <code>commandBuffer</code>"
   1304         },
   1305         {
   1306           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-parameter",
   1307           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   1308         },
   1309         {
   1310           "vuid": "VUID-vkCmdExecuteCommands-pCommandBuffers-parameter",
   1311           "text": " <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>commandBufferCount</code> valid <code>VkCommandBuffer</code> handles"
   1312         },
   1313         {
   1314           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-recording",
   1315           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   1316         },
   1317         {
   1318           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-cmdpool",
   1319           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   1320         },
   1321         {
   1322           "vuid": "VUID-vkCmdExecuteCommands-bufferlevel",
   1323           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
   1324         },
   1325         {
   1326           "vuid": "VUID-vkCmdExecuteCommands-commandBufferCount-arraylength",
   1327           "text": " <code>commandBufferCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   1328         },
   1329         {
   1330           "vuid": "VUID-vkCmdExecuteCommands-commonparent",
   1331           "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   1332         }
   1333       ],
   1334       "(VK_VERSION_1_1)": [
   1335         {
   1336           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01820",
   1337           "text": " If <code>commandBuffer</code> is a protected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be a protected command buffer."
   1338         },
   1339         {
   1340           "vuid": "VUID-vkCmdExecuteCommands-commandBuffer-01821",
   1341           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each element of <code>pCommandBuffers</code> <strong class=\"purple\">must</strong> be an unprotected command buffer."
   1342         }
   1343       ],
   1344       "(VK_EXT_transform_feedback)": [
   1345         {
   1346           "vuid": "VUID-vkCmdExecuteCommands-None-02286",
   1347           "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
   1348         }
   1349       ]
   1350     },
   1351     "VkDeviceGroupCommandBufferBeginInfo": {
   1352       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   1353         {
   1354           "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00106",
   1355           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
   1356         },
   1357         {
   1358           "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-deviceMask-00107",
   1359           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
   1360         },
   1361         {
   1362           "vuid": "VUID-VkDeviceGroupCommandBufferBeginInfo-sType-sType",
   1363           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO</code>"
   1364         }
   1365       ]
   1366     },
   1367     "vkCmdSetDeviceMask": {
   1368       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   1369         {
   1370           "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00108",
   1371           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
   1372         },
   1373         {
   1374           "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00109",
   1375           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
   1376         },
   1377         {
   1378           "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00110",
   1379           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupCommandBufferBeginInfo\">VkDeviceGroupCommandBufferBeginInfo</a>::<code>deviceMask</code> value when the command buffer began recording."
   1380         },
   1381         {
   1382           "vuid": "VUID-vkCmdSetDeviceMask-deviceMask-00111",
   1383           "text": " If <code>vkCmdSetDeviceMask</code> is called inside a render pass instance, <code>deviceMask</code> <strong class=\"purple\">must</strong> not include any set bits that were not in the <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a>::<code>deviceMask</code> value when the render pass instance began recording."
   1384         },
   1385         {
   1386           "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-parameter",
   1387           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   1388         },
   1389         {
   1390           "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-recording",
   1391           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   1392         },
   1393         {
   1394           "vuid": "VUID-vkCmdSetDeviceMask-commandBuffer-cmdpool",
   1395           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
   1396         }
   1397       ]
   1398     },
   1399     "vkCreateFence": {
   1400       "core": [
   1401         {
   1402           "vuid": "VUID-vkCreateFence-device-parameter",
   1403           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1404         },
   1405         {
   1406           "vuid": "VUID-vkCreateFence-pCreateInfo-parameter",
   1407           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceCreateInfo</code> structure"
   1408         },
   1409         {
   1410           "vuid": "VUID-vkCreateFence-pAllocator-parameter",
   1411           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   1412         },
   1413         {
   1414           "vuid": "VUID-vkCreateFence-pFence-parameter",
   1415           "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
   1416         }
   1417       ]
   1418     },
   1419     "VkFenceCreateInfo": {
   1420       "core": [
   1421         {
   1422           "vuid": "VUID-VkFenceCreateInfo-sType-sType",
   1423           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_CREATE_INFO</code>"
   1424         },
   1425         {
   1426           "vuid": "VUID-VkFenceCreateInfo-pNext-pNext",
   1427           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a> or <a href=\"#VkExportFenceWin32HandleInfoKHR\">VkExportFenceWin32HandleInfoKHR</a>"
   1428         },
   1429         {
   1430           "vuid": "VUID-VkFenceCreateInfo-sType-unique",
   1431           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   1432         },
   1433         {
   1434           "vuid": "VUID-VkFenceCreateInfo-flags-parameter",
   1435           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceCreateFlagBits\">VkFenceCreateFlagBits</a> values"
   1436         }
   1437       ]
   1438     },
   1439     "VkExportFenceCreateInfo": {
   1440       "(VK_VERSION_1_1,VK_KHR_external_fence)": [
   1441         {
   1442           "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-01446",
   1443           "text": " The bits in <code>handleTypes</code> must be supported and compatible, as reported by <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>."
   1444         },
   1445         {
   1446           "vuid": "VUID-VkExportFenceCreateInfo-sType-sType",
   1447           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO</code>"
   1448         },
   1449         {
   1450           "vuid": "VUID-VkExportFenceCreateInfo-handleTypes-parameter",
   1451           "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> values"
   1452         }
   1453       ]
   1454     },
   1455     "VkExportFenceWin32HandleInfoKHR": {
   1456       "(VK_KHR_external_fence_win32)": [
   1457         {
   1458           "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-handleTypes-01447",
   1459           "text": " If <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VkExportFenceWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkFenceCreateInfo\">VkFenceCreateInfo</a>."
   1460         },
   1461         {
   1462           "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-sType-sType",
   1463           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
   1464         },
   1465         {
   1466           "vuid": "VUID-VkExportFenceWin32HandleInfoKHR-pAttributes-parameter",
   1467           "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
   1468         }
   1469       ]
   1470     },
   1471     "vkGetFenceWin32HandleKHR": {
   1472       "(VK_KHR_external_fence_win32)": [
   1473         {
   1474           "vuid": "VUID-vkGetFenceWin32HandleKHR-device-parameter",
   1475           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1476         },
   1477         {
   1478           "vuid": "VUID-vkGetFenceWin32HandleKHR-pGetWin32HandleInfo-parameter",
   1479           "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetWin32HandleInfoKHR</code> structure"
   1480         },
   1481         {
   1482           "vuid": "VUID-vkGetFenceWin32HandleKHR-pHandle-parameter",
   1483           "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
   1484         }
   1485       ]
   1486     },
   1487     "VkFenceGetWin32HandleInfoKHR": {
   1488       "(VK_KHR_external_fence_win32)": [
   1489         {
   1490           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01448",
   1491           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when the <code>fence</code>&#8217;s current payload was created."
   1492         },
   1493         {
   1494           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01449",
   1495           "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetFenceWin32HandleKHR\">vkGetFenceWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>fence</code> and <code>handleType</code>."
   1496         },
   1497         {
   1498           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-01450",
   1499           "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-fences-importing\">Importing Fence Payloads</a> unless that imported payload&#8217;s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
   1500         },
   1501         {
   1502           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01451",
   1503           "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-fences-signaling\">fence signal operation</a> pending execution."
   1504         },
   1505         {
   1506           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-01452",
   1507           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
   1508         },
   1509         {
   1510           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-sType-sType",
   1511           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR</code>"
   1512         },
   1513         {
   1514           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-pNext-pNext",
   1515           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   1516         },
   1517         {
   1518           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-fence-parameter",
   1519           "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   1520         },
   1521         {
   1522           "vuid": "VUID-VkFenceGetWin32HandleInfoKHR-handleType-parameter",
   1523           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
   1524         }
   1525       ]
   1526     },
   1527     "vkGetFenceFdKHR": {
   1528       "(VK_KHR_external_fence_fd)": [
   1529         {
   1530           "vuid": "VUID-vkGetFenceFdKHR-device-parameter",
   1531           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1532         },
   1533         {
   1534           "vuid": "VUID-vkGetFenceFdKHR-pGetFdInfo-parameter",
   1535           "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFenceGetFdInfoKHR</code> structure"
   1536         },
   1537         {
   1538           "vuid": "VUID-vkGetFenceFdKHR-pFd-parameter",
   1539           "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
   1540         }
   1541       ]
   1542     },
   1543     "VkFenceGetFdInfoKHR": {
   1544       "(VK_KHR_external_fence_fd)": [
   1545         {
   1546           "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01453",
   1547           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportFenceCreateInfo\">VkExportFenceCreateInfo</a>::<code>handleTypes</code> when <code>fence</code>&#8217;s current payload was created."
   1548         },
   1549         {
   1550           "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01454",
   1551           "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>fence</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-fences-signaling\">fence signal operation</a> pending execution."
   1552         },
   1553         {
   1554           "vuid": "VUID-VkFenceGetFdInfoKHR-fence-01455",
   1555           "text": " <code>fence</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-fences-importing\">Importing Fence Payloads</a> unless that imported payload&#8217;s handle type was included in <a href=\"#VkExternalFenceProperties\">VkExternalFenceProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
   1556         },
   1557         {
   1558           "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-01456",
   1559           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
   1560         },
   1561         {
   1562           "vuid": "VUID-VkFenceGetFdInfoKHR-sType-sType",
   1563           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR</code>"
   1564         },
   1565         {
   1566           "vuid": "VUID-VkFenceGetFdInfoKHR-pNext-pNext",
   1567           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   1568         },
   1569         {
   1570           "vuid": "VUID-VkFenceGetFdInfoKHR-fence-parameter",
   1571           "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   1572         },
   1573         {
   1574           "vuid": "VUID-VkFenceGetFdInfoKHR-handleType-parameter",
   1575           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
   1576         }
   1577       ]
   1578     },
   1579     "vkDestroyFence": {
   1580       "core": [
   1581         {
   1582           "vuid": "VUID-vkDestroyFence-fence-01120",
   1583           "text": " All <a href=\"#devsandqueues-submission\">queue submission</a> commands that refer to <code>fence</code> <strong class=\"purple\">must</strong> have completed execution"
   1584         },
   1585         {
   1586           "vuid": "VUID-vkDestroyFence-fence-01121",
   1587           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   1588         },
   1589         {
   1590           "vuid": "VUID-vkDestroyFence-fence-01122",
   1591           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>fence</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   1592         },
   1593         {
   1594           "vuid": "VUID-vkDestroyFence-device-parameter",
   1595           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1596         },
   1597         {
   1598           "vuid": "VUID-vkDestroyFence-fence-parameter",
   1599           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   1600         },
   1601         {
   1602           "vuid": "VUID-vkDestroyFence-pAllocator-parameter",
   1603           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   1604         },
   1605         {
   1606           "vuid": "VUID-vkDestroyFence-fence-parent",
   1607           "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   1608         }
   1609       ]
   1610     },
   1611     "vkGetFenceStatus": {
   1612       "core": [
   1613         {
   1614           "vuid": "VUID-vkGetFenceStatus-device-parameter",
   1615           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1616         },
   1617         {
   1618           "vuid": "VUID-vkGetFenceStatus-fence-parameter",
   1619           "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   1620         },
   1621         {
   1622           "vuid": "VUID-vkGetFenceStatus-fence-parent",
   1623           "text": " <code>fence</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   1624         }
   1625       ]
   1626     },
   1627     "vkResetFences": {
   1628       "core": [
   1629         {
   1630           "vuid": "VUID-vkResetFences-pFences-01123",
   1631           "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> not be currently associated with any queue command that has not yet completed execution on that queue"
   1632         },
   1633         {
   1634           "vuid": "VUID-vkResetFences-device-parameter",
   1635           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1636         },
   1637         {
   1638           "vuid": "VUID-vkResetFences-pFences-parameter",
   1639           "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles"
   1640         },
   1641         {
   1642           "vuid": "VUID-vkResetFences-fenceCount-arraylength",
   1643           "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   1644         },
   1645         {
   1646           "vuid": "VUID-vkResetFences-pFences-parent",
   1647           "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   1648         }
   1649       ]
   1650     },
   1651     "vkWaitForFences": {
   1652       "core": [
   1653         {
   1654           "vuid": "VUID-vkWaitForFences-device-parameter",
   1655           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1656         },
   1657         {
   1658           "vuid": "VUID-vkWaitForFences-pFences-parameter",
   1659           "text": " <code>pFences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>fenceCount</code> valid <code>VkFence</code> handles"
   1660         },
   1661         {
   1662           "vuid": "VUID-vkWaitForFences-fenceCount-arraylength",
   1663           "text": " <code>fenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   1664         },
   1665         {
   1666           "vuid": "VUID-vkWaitForFences-pFences-parent",
   1667           "text": " Each element of <code>pFences</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   1668         }
   1669       ]
   1670     },
   1671     "vkRegisterDeviceEventEXT": {
   1672       "(VK_EXT_display_control)": [
   1673         {
   1674           "vuid": "VUID-vkRegisterDeviceEventEXT-device-parameter",
   1675           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1676         },
   1677         {
   1678           "vuid": "VUID-vkRegisterDeviceEventEXT-pDeviceEventInfo-parameter",
   1679           "text": " <code>pDeviceEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDeviceEventInfoEXT</code> structure"
   1680         },
   1681         {
   1682           "vuid": "VUID-vkRegisterDeviceEventEXT-pAllocator-parameter",
   1683           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   1684         },
   1685         {
   1686           "vuid": "VUID-vkRegisterDeviceEventEXT-pFence-parameter",
   1687           "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
   1688         }
   1689       ]
   1690     },
   1691     "VkDeviceEventInfoEXT": {
   1692       "(VK_EXT_display_control)": [
   1693         {
   1694           "vuid": "VUID-VkDeviceEventInfoEXT-sType-sType",
   1695           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT</code>"
   1696         },
   1697         {
   1698           "vuid": "VUID-VkDeviceEventInfoEXT-pNext-pNext",
   1699           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   1700         },
   1701         {
   1702           "vuid": "VUID-VkDeviceEventInfoEXT-deviceEvent-parameter",
   1703           "text": " <code>deviceEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceEventTypeEXT\">VkDeviceEventTypeEXT</a> value"
   1704         }
   1705       ]
   1706     },
   1707     "vkRegisterDisplayEventEXT": {
   1708       "(VK_EXT_display_control)": [
   1709         {
   1710           "vuid": "VUID-vkRegisterDisplayEventEXT-device-parameter",
   1711           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1712         },
   1713         {
   1714           "vuid": "VUID-vkRegisterDisplayEventEXT-display-parameter",
   1715           "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
   1716         },
   1717         {
   1718           "vuid": "VUID-vkRegisterDisplayEventEXT-pDisplayEventInfo-parameter",
   1719           "text": " <code>pDisplayEventInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayEventInfoEXT</code> structure"
   1720         },
   1721         {
   1722           "vuid": "VUID-vkRegisterDisplayEventEXT-pAllocator-parameter",
   1723           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   1724         },
   1725         {
   1726           "vuid": "VUID-vkRegisterDisplayEventEXT-pFence-parameter",
   1727           "text": " <code>pFence</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFence</code> handle"
   1728         }
   1729       ]
   1730     },
   1731     "VkDisplayEventInfoEXT": {
   1732       "(VK_EXT_display_control)": [
   1733         {
   1734           "vuid": "VUID-VkDisplayEventInfoEXT-sType-sType",
   1735           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT</code>"
   1736         },
   1737         {
   1738           "vuid": "VUID-VkDisplayEventInfoEXT-pNext-pNext",
   1739           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   1740         },
   1741         {
   1742           "vuid": "VUID-VkDisplayEventInfoEXT-displayEvent-parameter",
   1743           "text": " <code>displayEvent</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayEventTypeEXT\">VkDisplayEventTypeEXT</a> value"
   1744         }
   1745       ]
   1746     },
   1747     "vkImportFenceWin32HandleKHR": {
   1748       "(VK_KHR_external_fence_win32)": [
   1749         {
   1750           "vuid": "VUID-vkImportFenceWin32HandleKHR-device-parameter",
   1751           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1752         },
   1753         {
   1754           "vuid": "VUID-vkImportFenceWin32HandleKHR-pImportFenceWin32HandleInfo-parameter",
   1755           "text": " <code>pImportFenceWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceWin32HandleInfoKHR</code> structure"
   1756         }
   1757       ]
   1758     },
   1759     "VkImportFenceWin32HandleInfoKHR": {
   1760       "(VK_KHR_external_fence_win32)": [
   1761         {
   1762           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01457",
   1763           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-win32\">Handle Types Supported by VkImportFenceWin32HandleInfoKHR</a> table."
   1764         },
   1765         {
   1766           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01459",
   1767           "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
   1768         },
   1769         {
   1770           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01460",
   1771           "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>."
   1772         },
   1773         {
   1774           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-01461",
   1775           "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
   1776         },
   1777         {
   1778           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01462",
   1779           "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
   1780         },
   1781         {
   1782           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handle-01539",
   1783           "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>."
   1784         },
   1785         {
   1786           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-name-01540",
   1787           "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>."
   1788         },
   1789         {
   1790           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-sType-sType",
   1791           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR</code>"
   1792         },
   1793         {
   1794           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-pNext-pNext",
   1795           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   1796         },
   1797         {
   1798           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-fence-parameter",
   1799           "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   1800         },
   1801         {
   1802           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-flags-parameter",
   1803           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
   1804         },
   1805         {
   1806           "vuid": "VUID-VkImportFenceWin32HandleInfoKHR-handleType-parameter",
   1807           "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
   1808         }
   1809       ]
   1810     },
   1811     "vkImportFenceFdKHR": {
   1812       "(VK_KHR_external_fence_fd)": [
   1813         {
   1814           "vuid": "VUID-vkImportFenceFdKHR-fence-01463",
   1815           "text": " <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue"
   1816         },
   1817         {
   1818           "vuid": "VUID-vkImportFenceFdKHR-device-parameter",
   1819           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1820         },
   1821         {
   1822           "vuid": "VUID-vkImportFenceFdKHR-pImportFenceFdInfo-parameter",
   1823           "text": " <code>pImportFenceFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportFenceFdInfoKHR</code> structure"
   1824         }
   1825       ]
   1826     },
   1827     "VkImportFenceFdInfoKHR": {
   1828       "(VK_KHR_external_fence_fd)": [
   1829         {
   1830           "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-01464",
   1831           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-fence-handletypes-fd\">Handle Types Supported by VkImportFenceFdInfoKHR</a> table."
   1832         },
   1833         {
   1834           "vuid": "VUID-VkImportFenceFdInfoKHR-fd-01541",
   1835           "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-fence-handle-types-compatibility\">external fence handle types compatibility</a>."
   1836         },
   1837         {
   1838           "vuid": "VUID-VkImportFenceFdInfoKHR-sType-sType",
   1839           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR</code>"
   1840         },
   1841         {
   1842           "vuid": "VUID-VkImportFenceFdInfoKHR-pNext-pNext",
   1843           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   1844         },
   1845         {
   1846           "vuid": "VUID-VkImportFenceFdInfoKHR-fence-parameter",
   1847           "text": " <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   1848         },
   1849         {
   1850           "vuid": "VUID-VkImportFenceFdInfoKHR-flags-parameter",
   1851           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkFenceImportFlagBits\">VkFenceImportFlagBits</a> values"
   1852         },
   1853         {
   1854           "vuid": "VUID-VkImportFenceFdInfoKHR-handleType-parameter",
   1855           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
   1856         }
   1857       ]
   1858     },
   1859     "vkCreateSemaphore": {
   1860       "core": [
   1861         {
   1862           "vuid": "VUID-vkCreateSemaphore-device-parameter",
   1863           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1864         },
   1865         {
   1866           "vuid": "VUID-vkCreateSemaphore-pCreateInfo-parameter",
   1867           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreCreateInfo</code> structure"
   1868         },
   1869         {
   1870           "vuid": "VUID-vkCreateSemaphore-pAllocator-parameter",
   1871           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   1872         },
   1873         {
   1874           "vuid": "VUID-vkCreateSemaphore-pSemaphore-parameter",
   1875           "text": " <code>pSemaphore</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSemaphore</code> handle"
   1876         }
   1877       ]
   1878     },
   1879     "VkSemaphoreCreateInfo": {
   1880       "core": [
   1881         {
   1882           "vuid": "VUID-VkSemaphoreCreateInfo-sType-sType",
   1883           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO</code>"
   1884         },
   1885         {
   1886           "vuid": "VUID-VkSemaphoreCreateInfo-pNext-pNext",
   1887           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a> or <a href=\"#VkExportSemaphoreWin32HandleInfoKHR\">VkExportSemaphoreWin32HandleInfoKHR</a>"
   1888         },
   1889         {
   1890           "vuid": "VUID-VkSemaphoreCreateInfo-sType-unique",
   1891           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   1892         },
   1893         {
   1894           "vuid": "VUID-VkSemaphoreCreateInfo-flags-zerobitmask",
   1895           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   1896         }
   1897       ]
   1898     },
   1899     "VkExportSemaphoreCreateInfo": {
   1900       "(VK_VERSION_1_1,VK_KHR_external_semaphore)": [
   1901         {
   1902           "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-01124",
   1903           "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>."
   1904         },
   1905         {
   1906           "vuid": "VUID-VkExportSemaphoreCreateInfo-sType-sType",
   1907           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO</code>"
   1908         },
   1909         {
   1910           "vuid": "VUID-VkExportSemaphoreCreateInfo-handleTypes-parameter",
   1911           "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> values"
   1912         }
   1913       ]
   1914     },
   1915     "VkExportSemaphoreWin32HandleInfoKHR": {
   1916       "(VK_KHR_external_semaphore_win32)": [
   1917         {
   1918           "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-handleTypes-01125",
   1919           "text": " If <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>VkExportSemaphoreWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkSemaphoreCreateInfo\">VkSemaphoreCreateInfo</a>."
   1920         },
   1921         {
   1922           "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-sType-sType",
   1923           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
   1924         },
   1925         {
   1926           "vuid": "VUID-VkExportSemaphoreWin32HandleInfoKHR-pAttributes-parameter",
   1927           "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
   1928         }
   1929       ]
   1930     },
   1931     "vkGetSemaphoreWin32HandleKHR": {
   1932       "(VK_KHR_external_semaphore_win32)": [
   1933         {
   1934           "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-device-parameter",
   1935           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1936         },
   1937         {
   1938           "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pGetWin32HandleInfo-parameter",
   1939           "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetWin32HandleInfoKHR</code> structure"
   1940         },
   1941         {
   1942           "vuid": "VUID-vkGetSemaphoreWin32HandleKHR-pHandle-parameter",
   1943           "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
   1944         }
   1945       ]
   1946     },
   1947     "VkSemaphoreGetWin32HandleInfoKHR": {
   1948       "(VK_KHR_external_semaphore_win32)": [
   1949         {
   1950           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01126",
   1951           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when the <code>semaphore</code>&#8217;s current payload was created."
   1952         },
   1953         {
   1954           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01127",
   1955           "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetSemaphoreWin32HandleKHR\">vkGetSemaphoreWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>semaphore</code> and <code>handleType</code>."
   1956         },
   1957         {
   1958           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-01128",
   1959           "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a> unless that imported payload&#8217;s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
   1960         },
   1961         {
   1962           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01129",
   1963           "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a>, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>."
   1964         },
   1965         {
   1966           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01130",
   1967           "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> pending execution."
   1968         },
   1969         {
   1970           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-01131",
   1971           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
   1972         },
   1973         {
   1974           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-sType-sType",
   1975           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR</code>"
   1976         },
   1977         {
   1978           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-pNext-pNext",
   1979           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   1980         },
   1981         {
   1982           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-semaphore-parameter",
   1983           "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
   1984         },
   1985         {
   1986           "vuid": "VUID-VkSemaphoreGetWin32HandleInfoKHR-handleType-parameter",
   1987           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
   1988         }
   1989       ]
   1990     },
   1991     "vkGetSemaphoreFdKHR": {
   1992       "(VK_KHR_external_semaphore_fd)": [
   1993         {
   1994           "vuid": "VUID-vkGetSemaphoreFdKHR-device-parameter",
   1995           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   1996         },
   1997         {
   1998           "vuid": "VUID-vkGetSemaphoreFdKHR-pGetFdInfo-parameter",
   1999           "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSemaphoreGetFdInfoKHR</code> structure"
   2000         },
   2001         {
   2002           "vuid": "VUID-vkGetSemaphoreFdKHR-pFd-parameter",
   2003           "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
   2004         }
   2005       ]
   2006     },
   2007     "VkSemaphoreGetFdInfoKHR": {
   2008       "(VK_KHR_external_semaphore_fd)": [
   2009         {
   2010           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01132",
   2011           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportSemaphoreCreateInfo\">VkExportSemaphoreCreateInfo</a>::<code>handleTypes</code> when <code>semaphore</code>&#8217;s current payload was created."
   2012         },
   2013         {
   2014           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-01133",
   2015           "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not currently have its payload replaced by an imported payload as described below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a> unless that imported payload&#8217;s handle type was included in <a href=\"#VkExternalSemaphoreProperties\">VkExternalSemaphoreProperties</a>::<code>exportFromImportedHandleTypes</code> for <code>handleType</code>."
   2016         },
   2017         {
   2018           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01134",
   2019           "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, as defined below in <a href=\"#synchronization-semaphores-importing\">Importing Semaphore Payloads</a>, there <strong class=\"purple\">must</strong> be no queue waiting on <code>semaphore</code>."
   2020         },
   2021         {
   2022           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01135",
   2023           "text": " If <code>handleType</code> refers to a handle type with copy payload transference semantics, <code>semaphore</code> <strong class=\"purple\">must</strong> be signaled, or have an associated <a href=\"#synchronization-semaphores-signaling\">semaphore signal operation</a> pending execution."
   2024         },
   2025         {
   2026           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-01136",
   2027           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
   2028         },
   2029         {
   2030           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-sType-sType",
   2031           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR</code>"
   2032         },
   2033         {
   2034           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-pNext-pNext",
   2035           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   2036         },
   2037         {
   2038           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-semaphore-parameter",
   2039           "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
   2040         },
   2041         {
   2042           "vuid": "VUID-VkSemaphoreGetFdInfoKHR-handleType-parameter",
   2043           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
   2044         }
   2045       ]
   2046     },
   2047     "vkDestroySemaphore": {
   2048       "core": [
   2049         {
   2050           "vuid": "VUID-vkDestroySemaphore-semaphore-01137",
   2051           "text": " All submitted batches that refer to <code>semaphore</code> <strong class=\"purple\">must</strong> have completed execution"
   2052         },
   2053         {
   2054           "vuid": "VUID-vkDestroySemaphore-semaphore-01138",
   2055           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   2056         },
   2057         {
   2058           "vuid": "VUID-vkDestroySemaphore-semaphore-01139",
   2059           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>semaphore</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   2060         },
   2061         {
   2062           "vuid": "VUID-vkDestroySemaphore-device-parameter",
   2063           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2064         },
   2065         {
   2066           "vuid": "VUID-vkDestroySemaphore-semaphore-parameter",
   2067           "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
   2068         },
   2069         {
   2070           "vuid": "VUID-vkDestroySemaphore-pAllocator-parameter",
   2071           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   2072         },
   2073         {
   2074           "vuid": "VUID-vkDestroySemaphore-semaphore-parent",
   2075           "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   2076         }
   2077       ]
   2078     },
   2079     "vkImportSemaphoreWin32HandleKHR": {
   2080       "(VK_KHR_external_semaphore_win32)": [
   2081         {
   2082           "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-device-parameter",
   2083           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2084         },
   2085         {
   2086           "vuid": "VUID-vkImportSemaphoreWin32HandleKHR-pImportSemaphoreWin32HandleInfo-parameter",
   2087           "text": " <code>pImportSemaphoreWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreWin32HandleInfoKHR</code> structure"
   2088         }
   2089       ]
   2090     },
   2091     "VkImportSemaphoreWin32HandleInfoKHR": {
   2092       "(VK_KHR_external_semaphore_win32)": [
   2093         {
   2094           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01140",
   2095           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-win32\">Handle Types Supported by VkImportSemaphoreWin32HandleInfoKHR</a> table."
   2096         },
   2097         {
   2098           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01466",
   2099           "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT</code> or <code>VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
   2100         },
   2101         {
   2102           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01467",
   2103           "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid synchronization primitive of the type specified by <code>handleType</code>."
   2104         },
   2105         {
   2106           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-01468",
   2107           "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
   2108         },
   2109         {
   2110           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01469",
   2111           "text": " If <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
   2112         },
   2113         {
   2114           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handle-01542",
   2115           "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>."
   2116         },
   2117         {
   2118           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-name-01543",
   2119           "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>."
   2120         },
   2121         {
   2122           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-sType-sType",
   2123           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR</code>"
   2124         },
   2125         {
   2126           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-pNext-pNext",
   2127           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   2128         },
   2129         {
   2130           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-semaphore-parameter",
   2131           "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
   2132         },
   2133         {
   2134           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-flags-parameter",
   2135           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
   2136         },
   2137         {
   2138           "vuid": "VUID-VkImportSemaphoreWin32HandleInfoKHR-handleType-parameter",
   2139           "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
   2140         }
   2141       ]
   2142     },
   2143     "vkImportSemaphoreFdKHR": {
   2144       "(VK_KHR_external_semaphore_fd)": [
   2145         {
   2146           "vuid": "VUID-vkImportSemaphoreFdKHR-semaphore-01142",
   2147           "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> not be associated with any queue command that has not yet completed execution on that queue"
   2148         },
   2149         {
   2150           "vuid": "VUID-vkImportSemaphoreFdKHR-device-parameter",
   2151           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2152         },
   2153         {
   2154           "vuid": "VUID-vkImportSemaphoreFdKHR-pImportSemaphoreFdInfo-parameter",
   2155           "text": " <code>pImportSemaphoreFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImportSemaphoreFdInfoKHR</code> structure"
   2156         }
   2157       ]
   2158     },
   2159     "VkImportSemaphoreFdInfoKHR": {
   2160       "(VK_KHR_external_semaphore_fd)": [
   2161         {
   2162           "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-01143",
   2163           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a value included in the <a href=\"#synchronization-semaphore-handletypes-fd\">Handle Types Supported by VkImportSemaphoreFdInfoKHR</a> table."
   2164         },
   2165         {
   2166           "vuid": "VUID-VkImportSemaphoreFdInfoKHR-fd-01544",
   2167           "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-semaphore-handle-types-compatibility\">external semaphore handle types compatibility</a>."
   2168         },
   2169         {
   2170           "vuid": "VUID-VkImportSemaphoreFdInfoKHR-sType-sType",
   2171           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR</code>"
   2172         },
   2173         {
   2174           "vuid": "VUID-VkImportSemaphoreFdInfoKHR-pNext-pNext",
   2175           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   2176         },
   2177         {
   2178           "vuid": "VUID-VkImportSemaphoreFdInfoKHR-semaphore-parameter",
   2179           "text": " <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
   2180         },
   2181         {
   2182           "vuid": "VUID-VkImportSemaphoreFdInfoKHR-flags-parameter",
   2183           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSemaphoreImportFlagBits\">VkSemaphoreImportFlagBits</a> values"
   2184         },
   2185         {
   2186           "vuid": "VUID-VkImportSemaphoreFdInfoKHR-handleType-parameter",
   2187           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
   2188         }
   2189       ]
   2190     },
   2191     "vkCreateEvent": {
   2192       "core": [
   2193         {
   2194           "vuid": "VUID-vkCreateEvent-device-parameter",
   2195           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2196         },
   2197         {
   2198           "vuid": "VUID-vkCreateEvent-pCreateInfo-parameter",
   2199           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkEventCreateInfo</code> structure"
   2200         },
   2201         {
   2202           "vuid": "VUID-vkCreateEvent-pAllocator-parameter",
   2203           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   2204         },
   2205         {
   2206           "vuid": "VUID-vkCreateEvent-pEvent-parameter",
   2207           "text": " <code>pEvent</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkEvent</code> handle"
   2208         }
   2209       ]
   2210     },
   2211     "VkEventCreateInfo": {
   2212       "core": [
   2213         {
   2214           "vuid": "VUID-VkEventCreateInfo-sType-sType",
   2215           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EVENT_CREATE_INFO</code>"
   2216         },
   2217         {
   2218           "vuid": "VUID-VkEventCreateInfo-pNext-pNext",
   2219           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   2220         },
   2221         {
   2222           "vuid": "VUID-VkEventCreateInfo-flags-zerobitmask",
   2223           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   2224         }
   2225       ]
   2226     },
   2227     "vkDestroyEvent": {
   2228       "core": [
   2229         {
   2230           "vuid": "VUID-vkDestroyEvent-event-01145",
   2231           "text": " All submitted commands that refer to <code>event</code> <strong class=\"purple\">must</strong> have completed execution"
   2232         },
   2233         {
   2234           "vuid": "VUID-vkDestroyEvent-event-01146",
   2235           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   2236         },
   2237         {
   2238           "vuid": "VUID-vkDestroyEvent-event-01147",
   2239           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>event</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   2240         },
   2241         {
   2242           "vuid": "VUID-vkDestroyEvent-device-parameter",
   2243           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2244         },
   2245         {
   2246           "vuid": "VUID-vkDestroyEvent-event-parameter",
   2247           "text": " If <code>event</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
   2248         },
   2249         {
   2250           "vuid": "VUID-vkDestroyEvent-pAllocator-parameter",
   2251           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   2252         },
   2253         {
   2254           "vuid": "VUID-vkDestroyEvent-event-parent",
   2255           "text": " If <code>event</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   2256         }
   2257       ]
   2258     },
   2259     "vkGetEventStatus": {
   2260       "core": [
   2261         {
   2262           "vuid": "VUID-vkGetEventStatus-device-parameter",
   2263           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2264         },
   2265         {
   2266           "vuid": "VUID-vkGetEventStatus-event-parameter",
   2267           "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
   2268         },
   2269         {
   2270           "vuid": "VUID-vkGetEventStatus-event-parent",
   2271           "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   2272         }
   2273       ]
   2274     },
   2275     "vkSetEvent": {
   2276       "core": [
   2277         {
   2278           "vuid": "VUID-vkSetEvent-device-parameter",
   2279           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2280         },
   2281         {
   2282           "vuid": "VUID-vkSetEvent-event-parameter",
   2283           "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
   2284         },
   2285         {
   2286           "vuid": "VUID-vkSetEvent-event-parent",
   2287           "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   2288         }
   2289       ]
   2290     },
   2291     "vkResetEvent": {
   2292       "core": [
   2293         {
   2294           "vuid": "VUID-vkResetEvent-event-01148",
   2295           "text": " <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
   2296         },
   2297         {
   2298           "vuid": "VUID-vkResetEvent-device-parameter",
   2299           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2300         },
   2301         {
   2302           "vuid": "VUID-vkResetEvent-event-parameter",
   2303           "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
   2304         },
   2305         {
   2306           "vuid": "VUID-vkResetEvent-event-parent",
   2307           "text": " <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   2308         }
   2309       ]
   2310     },
   2311     "vkCmdSetEvent": {
   2312       "core": [
   2313         {
   2314           "vuid": "VUID-vkCmdSetEvent-stageMask-01149",
   2315           "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
   2316         },
   2317         {
   2318           "vuid": "VUID-vkCmdSetEvent-stageMask-01150",
   2319           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   2320         },
   2321         {
   2322           "vuid": "VUID-vkCmdSetEvent-stageMask-01151",
   2323           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   2324         },
   2325         {
   2326           "vuid": "VUID-vkCmdSetEvent-commandBuffer-parameter",
   2327           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   2328         },
   2329         {
   2330           "vuid": "VUID-vkCmdSetEvent-event-parameter",
   2331           "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
   2332         },
   2333         {
   2334           "vuid": "VUID-vkCmdSetEvent-stageMask-parameter",
   2335           "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   2336         },
   2337         {
   2338           "vuid": "VUID-vkCmdSetEvent-stageMask-requiredbitmask",
   2339           "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   2340         },
   2341         {
   2342           "vuid": "VUID-vkCmdSetEvent-commandBuffer-recording",
   2343           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   2344         },
   2345         {
   2346           "vuid": "VUID-vkCmdSetEvent-commandBuffer-cmdpool",
   2347           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   2348         },
   2349         {
   2350           "vuid": "VUID-vkCmdSetEvent-renderpass",
   2351           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   2352         },
   2353         {
   2354           "vuid": "VUID-vkCmdSetEvent-commonparent",
   2355           "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   2356         }
   2357       ],
   2358       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   2359         {
   2360           "vuid": "VUID-vkCmdSetEvent-commandBuffer-01152",
   2361           "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
   2362         }
   2363       ],
   2364       "(VK_NV_mesh_shader)": [
   2365         {
   2366           "vuid": "VUID-vkCmdSetEvent-stageMask-02107",
   2367           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   2368         },
   2369         {
   2370           "vuid": "VUID-vkCmdSetEvent-stageMask-02108",
   2371           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   2372         }
   2373       ]
   2374     },
   2375     "vkCmdResetEvent": {
   2376       "core": [
   2377         {
   2378           "vuid": "VUID-vkCmdResetEvent-stageMask-01153",
   2379           "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
   2380         },
   2381         {
   2382           "vuid": "VUID-vkCmdResetEvent-stageMask-01154",
   2383           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   2384         },
   2385         {
   2386           "vuid": "VUID-vkCmdResetEvent-stageMask-01155",
   2387           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   2388         },
   2389         {
   2390           "vuid": "VUID-vkCmdResetEvent-event-01156",
   2391           "text": " When this command executes, <code>event</code> <strong class=\"purple\">must</strong> not be waited on by a <code>vkCmdWaitEvents</code> command that is currently executing"
   2392         },
   2393         {
   2394           "vuid": "VUID-vkCmdResetEvent-commandBuffer-parameter",
   2395           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   2396         },
   2397         {
   2398           "vuid": "VUID-vkCmdResetEvent-event-parameter",
   2399           "text": " <code>event</code> <strong class=\"purple\">must</strong> be a valid <code>VkEvent</code> handle"
   2400         },
   2401         {
   2402           "vuid": "VUID-vkCmdResetEvent-stageMask-parameter",
   2403           "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   2404         },
   2405         {
   2406           "vuid": "VUID-vkCmdResetEvent-stageMask-requiredbitmask",
   2407           "text": " <code>stageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   2408         },
   2409         {
   2410           "vuid": "VUID-vkCmdResetEvent-commandBuffer-recording",
   2411           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   2412         },
   2413         {
   2414           "vuid": "VUID-vkCmdResetEvent-commandBuffer-cmdpool",
   2415           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   2416         },
   2417         {
   2418           "vuid": "VUID-vkCmdResetEvent-renderpass",
   2419           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   2420         },
   2421         {
   2422           "vuid": "VUID-vkCmdResetEvent-commonparent",
   2423           "text": " Both of <code>commandBuffer</code>, and <code>event</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   2424         }
   2425       ],
   2426       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   2427         {
   2428           "vuid": "VUID-vkCmdResetEvent-commandBuffer-01157",
   2429           "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
   2430         }
   2431       ],
   2432       "(VK_NV_mesh_shader)": [
   2433         {
   2434           "vuid": "VUID-vkCmdResetEvent-stageMask-02109",
   2435           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   2436         },
   2437         {
   2438           "vuid": "VUID-vkCmdResetEvent-stageMask-02110",
   2439           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>stageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   2440         }
   2441       ]
   2442     },
   2443     "vkCmdWaitEvents": {
   2444       "core": [
   2445         {
   2446           "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01158",
   2447           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be the bitwise OR of the <code>stageMask</code> parameter used in previous calls to <code>vkCmdSetEvent</code> with any of the members of <code>pEvents</code> and <code>VK_PIPELINE_STAGE_HOST_BIT</code> if any of the members of <code>pEvents</code> was set using <code>vkSetEvent</code>"
   2448         },
   2449         {
   2450           "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01159",
   2451           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   2452         },
   2453         {
   2454           "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01160",
   2455           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   2456         },
   2457         {
   2458           "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01161",
   2459           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   2460         },
   2461         {
   2462           "vuid": "VUID-vkCmdWaitEvents-dstStageMask-01162",
   2463           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   2464         },
   2465         {
   2466           "vuid": "VUID-vkCmdWaitEvents-pEvents-01163",
   2467           "text": " If <code>pEvents</code> includes one or more events that will be signaled by <code>vkSetEvent</code> after <code>commandBuffer</code> has been submitted to a queue, then <code>vkCmdWaitEvents</code> <strong class=\"purple\">must</strong> not be called inside a render pass instance"
   2468         },
   2469         {
   2470           "vuid": "VUID-vkCmdWaitEvents-srcStageMask-01164",
   2471           "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>."
   2472         },
   2473         {
   2474           "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01165",
   2475           "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
   2476         },
   2477         {
   2478           "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-01166",
   2479           "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> or <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
   2480         },
   2481         {
   2482           "vuid": "VUID-vkCmdWaitEvents-commandBuffer-parameter",
   2483           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   2484         },
   2485         {
   2486           "vuid": "VUID-vkCmdWaitEvents-pEvents-parameter",
   2487           "text": " <code>pEvents</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>eventCount</code> valid <code>VkEvent</code> handles"
   2488         },
   2489         {
   2490           "vuid": "VUID-vkCmdWaitEvents-srcStageMask-parameter",
   2491           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   2492         },
   2493         {
   2494           "vuid": "VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask",
   2495           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   2496         },
   2497         {
   2498           "vuid": "VUID-vkCmdWaitEvents-dstStageMask-parameter",
   2499           "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   2500         },
   2501         {
   2502           "vuid": "VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask",
   2503           "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   2504         },
   2505         {
   2506           "vuid": "VUID-vkCmdWaitEvents-pMemoryBarriers-parameter",
   2507           "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures"
   2508         },
   2509         {
   2510           "vuid": "VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter",
   2511           "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures"
   2512         },
   2513         {
   2514           "vuid": "VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter",
   2515           "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures"
   2516         },
   2517         {
   2518           "vuid": "VUID-vkCmdWaitEvents-commandBuffer-recording",
   2519           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   2520         },
   2521         {
   2522           "vuid": "VUID-vkCmdWaitEvents-commandBuffer-cmdpool",
   2523           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   2524         },
   2525         {
   2526           "vuid": "VUID-vkCmdWaitEvents-eventCount-arraylength",
   2527           "text": " <code>eventCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   2528         },
   2529         {
   2530           "vuid": "VUID-vkCmdWaitEvents-commonparent",
   2531           "text": " Both of <code>commandBuffer</code>, and the elements of <code>pEvents</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   2532         }
   2533       ],
   2534       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   2535         {
   2536           "vuid": "VUID-vkCmdWaitEvents-commandBuffer-01167",
   2537           "text": " <code>commandBuffer</code>&#8217;s current device mask <strong class=\"purple\">must</strong> include exactly one physical device."
   2538         }
   2539       ],
   2540       "(VK_NV_mesh_shader)": [
   2541         {
   2542           "vuid": "VUID-vkCmdWaitEvents-srcStageMask-02111",
   2543           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   2544         },
   2545         {
   2546           "vuid": "VUID-vkCmdWaitEvents-srcStageMask-02112",
   2547           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   2548         },
   2549         {
   2550           "vuid": "VUID-vkCmdWaitEvents-dstStageMask-02113",
   2551           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   2552         },
   2553         {
   2554           "vuid": "VUID-vkCmdWaitEvents-dstStageMask-02114",
   2555           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   2556         }
   2557       ]
   2558     },
   2559     "vkCmdPipelineBarrier": {
   2560       "core": [
   2561         {
   2562           "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01168",
   2563           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   2564         },
   2565         {
   2566           "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01169",
   2567           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   2568         },
   2569         {
   2570           "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01170",
   2571           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   2572         },
   2573         {
   2574           "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-01171",
   2575           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   2576         },
   2577         {
   2578           "vuid": "VUID-vkCmdPipelineBarrier-pDependencies-02285",
   2579           "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the render pass <strong class=\"purple\">must</strong> have been created with at least one <code>VkSubpassDependency</code> instance in <code>VkRenderPassCreateInfo</code>::<code>pDependencies</code> that expresses a dependency from the current subpass to itself, and for which <code>srcStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcStageMask</code>, <code>dstStageMask</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstStageMask</code>, <code>dependencyFlags</code> is equal to <code>VkSubpassDependency</code>::<code>dependencyFlags</code>, <code>srcAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>srcAccessMask</code>, and <code>dstAccessMask</code> member of each element of <code>pMemoryBarriers</code> and <code>pImageMemoryBarriers</code> contains a subset of the bit values in <code>VkSubpassDependency</code>::<code>dstAccessMask</code>"
   2580         },
   2581         {
   2582           "vuid": "VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178",
   2583           "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, <code>bufferMemoryBarrierCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   2584         },
   2585         {
   2586           "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-01181",
   2587           "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of an element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal"
   2588         },
   2589         {
   2590           "vuid": "VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182",
   2591           "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
   2592         },
   2593         {
   2594           "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-01183",
   2595           "text": " Any pipeline stage included in <code>srcStageMask</code> or <code>dstStageMask</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family specified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> structure that was used to create the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from, as specified in the <a href=\"#synchronization-pipeline-stages-supported\">table of supported pipeline stages</a>."
   2596         },
   2597         {
   2598           "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01184",
   2599           "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>srcAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
   2600         },
   2601         {
   2602           "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-01185",
   2603           "text": " Each element of <code>pMemoryBarriers</code>, <code>pBufferMemoryBarriers</code> and <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> not have any access flag included in its <code>dstAccessMask</code> member if that bit is not supported by any of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>."
   2604         },
   2605         {
   2606           "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-parameter",
   2607           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   2608         },
   2609         {
   2610           "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-parameter",
   2611           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   2612         },
   2613         {
   2614           "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask",
   2615           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   2616         },
   2617         {
   2618           "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-parameter",
   2619           "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   2620         },
   2621         {
   2622           "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask",
   2623           "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   2624         },
   2625         {
   2626           "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-parameter",
   2627           "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
   2628         },
   2629         {
   2630           "vuid": "VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter",
   2631           "text": " If <code>memoryBarrierCount</code> is not <code>0</code>, <code>pMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryBarrierCount</code> valid <code>VkMemoryBarrier</code> structures"
   2632         },
   2633         {
   2634           "vuid": "VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter",
   2635           "text": " If <code>bufferMemoryBarrierCount</code> is not <code>0</code>, <code>pBufferMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferMemoryBarrierCount</code> valid <code>VkBufferMemoryBarrier</code> structures"
   2636         },
   2637         {
   2638           "vuid": "VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter",
   2639           "text": " If <code>imageMemoryBarrierCount</code> is not <code>0</code>, <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageMemoryBarrierCount</code> valid <code>VkImageMemoryBarrier</code> structures"
   2640         },
   2641         {
   2642           "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-recording",
   2643           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   2644         },
   2645         {
   2646           "vuid": "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool",
   2647           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   2648         }
   2649       ],
   2650       "(VK_KHR_depth_stencil_resolve)": [
   2651         {
   2652           "vuid": "VUID-vkCmdPipelineBarrier-image-02635",
   2653           "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with"
   2654         },
   2655         {
   2656           "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02636",
   2657           "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance or by the <code>pDepthStencilResolveAttachment</code> member of the <code>VkSubpassDescriptionDepthStencilResolveKHR</code> structure that the current subpass was created with, that refers to the same <code>image</code>"
   2658         }
   2659       ],
   2660       "!(VK_KHR_depth_stencil_resolve)": [
   2661         {
   2662           "vuid": "VUID-vkCmdPipelineBarrier-image-02637",
   2663           "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>image</code> member of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to one of the elements of <code>pAttachments</code> that the current <code>framebuffer</code> was created with, that is also referred to by one of the elements of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with"
   2664         },
   2665         {
   2666           "vuid": "VUID-vkCmdPipelineBarrier-oldLayout-02638",
   2667           "text": " If <code>vkCmdPipelineBarrier</code> is called within a render pass instance, the <code>oldLayout</code> and <code>newLayout</code> members of any element of <code>pImageMemoryBarriers</code> <strong class=\"purple\">must</strong> be equal to the <code>layout</code> member of an element of the <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code> members of the <code>VkSubpassDescription</code> instance that the current subpass was created with, that refers to the same <code>image</code>"
   2668         }
   2669       ],
   2670       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   2671         {
   2672           "vuid": "VUID-vkCmdPipelineBarrier-dependencyFlags-01186",
   2673           "text": " If <code>vkCmdPipelineBarrier</code> is called outside of a render pass instance, <code>dependencyFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
   2674         }
   2675       ],
   2676       "(VK_NV_mesh_shader)": [
   2677         {
   2678           "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02115",
   2679           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   2680         },
   2681         {
   2682           "vuid": "VUID-vkCmdPipelineBarrier-srcStageMask-02116",
   2683           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   2684         },
   2685         {
   2686           "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02117",
   2687           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   2688         },
   2689         {
   2690           "vuid": "VUID-vkCmdPipelineBarrier-dstStageMask-02118",
   2691           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   2692         }
   2693       ]
   2694     },
   2695     "VkMemoryBarrier": {
   2696       "core": [
   2697         {
   2698           "vuid": "VUID-VkMemoryBarrier-sType-sType",
   2699           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_BARRIER</code>"
   2700         },
   2701         {
   2702           "vuid": "VUID-VkMemoryBarrier-pNext-pNext",
   2703           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   2704         },
   2705         {
   2706           "vuid": "VUID-VkMemoryBarrier-srcAccessMask-parameter",
   2707           "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   2708         },
   2709         {
   2710           "vuid": "VUID-VkMemoryBarrier-dstAccessMask-parameter",
   2711           "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   2712         }
   2713       ]
   2714     },
   2715     "VkBufferMemoryBarrier": {
   2716       "core": [
   2717         {
   2718           "vuid": "VUID-VkBufferMemoryBarrier-offset-01187",
   2719           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
   2720         },
   2721         {
   2722           "vuid": "VUID-VkBufferMemoryBarrier-size-01188",
   2723           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   2724         },
   2725         {
   2726           "vuid": "VUID-VkBufferMemoryBarrier-size-01189",
   2727           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to than the size of <code>buffer</code> minus <code>offset</code>"
   2728         },
   2729         {
   2730           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01196",
   2731           "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier"
   2732         },
   2733         {
   2734           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01931",
   2735           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   2736         },
   2737         {
   2738           "vuid": "VUID-VkBufferMemoryBarrier-sType-sType",
   2739           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER</code>"
   2740         },
   2741         {
   2742           "vuid": "VUID-VkBufferMemoryBarrier-pNext-pNext",
   2743           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   2744         },
   2745         {
   2746           "vuid": "VUID-VkBufferMemoryBarrier-srcAccessMask-parameter",
   2747           "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   2748         },
   2749         {
   2750           "vuid": "VUID-VkBufferMemoryBarrier-dstAccessMask-parameter",
   2751           "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   2752         },
   2753         {
   2754           "vuid": "VUID-VkBufferMemoryBarrier-buffer-parameter",
   2755           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   2756         }
   2757       ],
   2758       "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
   2759         {
   2760           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01190",
   2761           "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>"
   2762         },
   2763         {
   2764           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01192",
   2765           "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)"
   2766         }
   2767       ],
   2768       "(VK_VERSION_1_1,VK_KHR_external_memory)": [
   2769         {
   2770           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01191",
   2771           "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
   2772         },
   2773         {
   2774           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01763",
   2775           "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory ownership transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
   2776         },
   2777         {
   2778           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01193",
   2779           "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>"
   2780         },
   2781         {
   2782           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01764",
   2783           "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
   2784         },
   2785         {
   2786           "vuid": "VUID-VkBufferMemoryBarrier-buffer-01765",
   2787           "text": " If <code>buffer</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
   2788         }
   2789       ]
   2790     },
   2791     "VkImageMemoryBarrier": {
   2792       "core": [
   2793         {
   2794           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01197",
   2795           "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or the current layout of the image subresources affected by the barrier"
   2796         },
   2797         {
   2798           "vuid": "VUID-VkImageMemoryBarrier-newLayout-01198",
   2799           "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
   2800         },
   2801         {
   2802           "vuid": "VUID-VkImageMemoryBarrier-image-01205",
   2803           "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, and <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> are not <code>VK_QUEUE_FAMILY_IGNORED</code>, at least one of them <strong class=\"purple\">must</strong> be the same as the family of the queue that will execute this barrier"
   2804         },
   2805         {
   2806           "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01486",
   2807           "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   2808         },
   2809         {
   2810           "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01724",
   2811           "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> &#43; <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   2812         },
   2813         {
   2814           "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01488",
   2815           "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   2816         },
   2817         {
   2818           "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-01725",
   2819           "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> &#43; <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   2820         },
   2821         {
   2822           "vuid": "VUID-VkImageMemoryBarrier-image-01207",
   2823           "text": " If <code>image</code> has a depth/stencil format with both depth and stencil components, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include both <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> and <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
   2824         },
   2825         {
   2826           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01208",
   2827           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code> set"
   2828         },
   2829         {
   2830           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01209",
   2831           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
   2832         },
   2833         {
   2834           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01210",
   2835           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
   2836         },
   2837         {
   2838           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01211",
   2839           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
   2840         },
   2841         {
   2842           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01212",
   2843           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> set"
   2844         },
   2845         {
   2846           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01213",
   2847           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> set"
   2848         },
   2849         {
   2850           "vuid": "VUID-VkImageMemoryBarrier-image-01932",
   2851           "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   2852         },
   2853         {
   2854           "vuid": "VUID-VkImageMemoryBarrier-sType-sType",
   2855           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER</code>"
   2856         },
   2857         {
   2858           "vuid": "VUID-VkImageMemoryBarrier-pNext-pNext",
   2859           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSampleLocationsInfoEXT\">VkSampleLocationsInfoEXT</a>"
   2860         },
   2861         {
   2862           "vuid": "VUID-VkImageMemoryBarrier-srcAccessMask-parameter",
   2863           "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   2864         },
   2865         {
   2866           "vuid": "VUID-VkImageMemoryBarrier-dstAccessMask-parameter",
   2867           "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   2868         },
   2869         {
   2870           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-parameter",
   2871           "text": " <code>oldLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   2872         },
   2873         {
   2874           "vuid": "VUID-VkImageMemoryBarrier-newLayout-parameter",
   2875           "text": " <code>newLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   2876         },
   2877         {
   2878           "vuid": "VUID-VkImageMemoryBarrier-image-parameter",
   2879           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   2880         },
   2881         {
   2882           "vuid": "VUID-VkImageMemoryBarrier-subresourceRange-parameter",
   2883           "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure"
   2884         }
   2885       ],
   2886       "!(VK_VERSION_1_1,VK_KHR_external_memory)": [
   2887         {
   2888           "vuid": "VUID-VkImageMemoryBarrier-image-01199",
   2889           "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> both be <code>VK_QUEUE_FAMILY_IGNORED</code>"
   2890         },
   2891         {
   2892           "vuid": "VUID-VkImageMemoryBarrier-image-01200",
   2893           "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code>, <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> either both be <code>VK_QUEUE_FAMILY_IGNORED</code>, or both be a valid queue family (see <a href=\"#devsandqueues-queueprops\">Queue Family Properties</a>)."
   2894         }
   2895       ],
   2896       "(VK_VERSION_1_1,VK_KHR_external_memory)": [
   2897         {
   2898           "vuid": "VUID-VkImageMemoryBarrier-image-01381",
   2899           "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, at least one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code>"
   2900         },
   2901         {
   2902           "vuid": "VUID-VkImageMemoryBarrier-image-01766",
   2903           "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_CONCURRENT</code>, and one of <code>srcQueueFamilyIndex</code> and <code>dstQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, the other <strong class=\"purple\">must</strong> be <code>VK_QUEUE_FAMILY_IGNORED</code> or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
   2904         },
   2905         {
   2906           "vuid": "VUID-VkImageMemoryBarrier-image-01201",
   2907           "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is <code>VK_QUEUE_FAMILY_IGNORED</code>, <code>dstQueueFamilyIndex</code> <strong class=\"purple\">must</strong> also be <code>VK_QUEUE_FAMILY_IGNORED</code>."
   2908         },
   2909         {
   2910           "vuid": "VUID-VkImageMemoryBarrier-image-01767",
   2911           "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>srcQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
   2912         },
   2913         {
   2914           "vuid": "VUID-VkImageMemoryBarrier-image-01768",
   2915           "text": " If <code>image</code> was created with a sharing mode of <code>VK_SHARING_MODE_EXCLUSIVE</code> and <code>dstQueueFamilyIndex</code> is not <code>VK_QUEUE_FAMILY_IGNORED</code>, it <strong class=\"purple\">must</strong> be a valid queue family or a special queue family reserved for external memory transfers, as described in <a href=\"#synchronization-queue-transfers\">Queue Family Ownership Transfer</a>."
   2916         }
   2917       ],
   2918       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   2919         {
   2920           "vuid": "VUID-VkImageMemoryBarrier-image-01671",
   2921           "text": " If <code>image</code> has a single-plane color format or is not <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
   2922         },
   2923         {
   2924           "vuid": "VUID-VkImageMemoryBarrier-image-01672",
   2925           "text": " If <code>image</code> has a multi-planar format and the image is <em>disjoint</em>, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> include either at least one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>; or <strong class=\"purple\">must</strong> include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
   2926         },
   2927         {
   2928           "vuid": "VUID-VkImageMemoryBarrier-image-01673",
   2929           "text": " If <code>image</code> has a multi-planar format with only two planes, then the <code>aspectMask</code> member of <code>subresourceRange</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
   2930         }
   2931       ],
   2932       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   2933         {
   2934           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01658",
   2935           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
   2936         },
   2937         {
   2938           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-01659",
   2939           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> set"
   2940         }
   2941       ],
   2942       "(VK_NV_shading_rate_image)": [
   2943         {
   2944           "vuid": "VUID-VkImageMemoryBarrier-oldLayout-02088",
   2945           "text": " If either <code>oldLayout</code> or <code>newLayout</code> is <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> then <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code> set"
   2946         }
   2947       ]
   2948     },
   2949     "vkQueueWaitIdle": {
   2950       "core": [
   2951         {
   2952           "vuid": "VUID-vkQueueWaitIdle-queue-parameter",
   2953           "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
   2954         }
   2955       ]
   2956     },
   2957     "vkDeviceWaitIdle": {
   2958       "core": [
   2959         {
   2960           "vuid": "VUID-vkDeviceWaitIdle-device-parameter",
   2961           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2962         }
   2963       ]
   2964     },
   2965     "vkGetCalibratedTimestampsEXT": {
   2966       "(VK_EXT_calibrated_timestamps)": [
   2967         {
   2968           "vuid": "VUID-vkGetCalibratedTimestampsEXT-device-parameter",
   2969           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   2970         },
   2971         {
   2972           "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestampInfos-parameter",
   2973           "text": " <code>pTimestampInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> valid <code>VkCalibratedTimestampInfoEXT</code> structures"
   2974         },
   2975         {
   2976           "vuid": "VUID-vkGetCalibratedTimestampsEXT-pTimestamps-parameter",
   2977           "text": " <code>pTimestamps</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>timestampCount</code> <code>uint64_t</code> values"
   2978         },
   2979         {
   2980           "vuid": "VUID-vkGetCalibratedTimestampsEXT-pMaxDeviation-parameter",
   2981           "text": " <code>pMaxDeviation</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
   2982         },
   2983         {
   2984           "vuid": "VUID-vkGetCalibratedTimestampsEXT-timestampCount-arraylength",
   2985           "text": " <code>timestampCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   2986         }
   2987       ]
   2988     },
   2989     "VkCalibratedTimestampInfoEXT": {
   2990       "(VK_EXT_calibrated_timestamps)": [
   2991         {
   2992           "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-02354",
   2993           "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values returned by <a href=\"#vkGetPhysicalDeviceCalibrateableTimeDomainsEXT\">vkGetPhysicalDeviceCalibrateableTimeDomainsEXT</a>"
   2994         },
   2995         {
   2996           "vuid": "VUID-VkCalibratedTimestampInfoEXT-sType-sType",
   2997           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT</code>"
   2998         },
   2999         {
   3000           "vuid": "VUID-VkCalibratedTimestampInfoEXT-pNext-pNext",
   3001           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   3002         },
   3003         {
   3004           "vuid": "VUID-VkCalibratedTimestampInfoEXT-timeDomain-parameter",
   3005           "text": " <code>timeDomain</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> value"
   3006         }
   3007       ]
   3008     },
   3009     "vkCreateRenderPass": {
   3010       "core": [
   3011         {
   3012           "vuid": "VUID-vkCreateRenderPass-device-parameter",
   3013           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   3014         },
   3015         {
   3016           "vuid": "VUID-vkCreateRenderPass-pCreateInfo-parameter",
   3017           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo</code> structure"
   3018         },
   3019         {
   3020           "vuid": "VUID-vkCreateRenderPass-pAllocator-parameter",
   3021           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   3022         },
   3023         {
   3024           "vuid": "VUID-vkCreateRenderPass-pRenderPass-parameter",
   3025           "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle"
   3026         }
   3027       ]
   3028     },
   3029     "VkRenderPassCreateInfo": {
   3030       "core": [
   3031         {
   3032           "vuid": "VUID-VkRenderPassCreateInfo-attachment-00834",
   3033           "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>"
   3034         },
   3035         {
   3036           "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-00836",
   3037           "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>."
   3038         },
   3039         {
   3040           "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-02511",
   3041           "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>."
   3042         },
   3043         {
   3044           "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00837",
   3045           "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass"
   3046         },
   3047         {
   3048           "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-00838",
   3049           "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass"
   3050         },
   3051         {
   3052           "vuid": "VUID-VkRenderPassCreateInfo-srcSubpass-02517",
   3053           "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
   3054         },
   3055         {
   3056           "vuid": "VUID-VkRenderPassCreateInfo-dstSubpass-02518",
   3057           "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
   3058         },
   3059         {
   3060           "vuid": "VUID-VkRenderPassCreateInfo-sType-sType",
   3061           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO</code>"
   3062         },
   3063         {
   3064           "vuid": "VUID-VkRenderPassCreateInfo-pNext-pNext",
   3065           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkRenderPassFragmentDensityMapCreateInfoEXT\">VkRenderPassFragmentDensityMapCreateInfoEXT</a>, <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, or <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>"
   3066         },
   3067         {
   3068           "vuid": "VUID-VkRenderPassCreateInfo-sType-unique",
   3069           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   3070         },
   3071         {
   3072           "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-parameter",
   3073           "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription</code> structures"
   3074         },
   3075         {
   3076           "vuid": "VUID-VkRenderPassCreateInfo-pSubpasses-parameter",
   3077           "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription</code> structures"
   3078         },
   3079         {
   3080           "vuid": "VUID-VkRenderPassCreateInfo-pDependencies-parameter",
   3081           "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency</code> structures"
   3082         },
   3083         {
   3084           "vuid": "VUID-VkRenderPassCreateInfo-subpassCount-arraylength",
   3085           "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   3086         }
   3087       ],
   3088       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   3089         {
   3090           "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01566",
   3091           "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>."
   3092         },
   3093         {
   3094           "vuid": "VUID-VkRenderPassCreateInfo-pAttachments-01567",
   3095           "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>."
   3096         },
   3097         {
   3098           "vuid": "VUID-VkRenderPassCreateInfo-pNext-01926",
   3099           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>subpass</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
   3100         },
   3101         {
   3102           "vuid": "VUID-VkRenderPassCreateInfo-pNext-01927",
   3103           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, the <code>inputAttachmentIndex</code> member of each element of its <code>pAspectReferences</code> member <strong class=\"purple\">must</strong> be less than the value of <code>inputAttachmentCount</code> in the member of <code>pSubpasses</code> identified by its <code>subpass</code> member"
   3104         },
   3105         {
   3106           "vuid": "VUID-VkRenderPassCreateInfo-pNext-01963",
   3107           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>, for any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> where the <code>attachment</code> member is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of the corresponding element of <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a>::<code>pAspectReferences</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> at <code>attachment</code>"
   3108         }
   3109       ],
   3110       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   3111         {
   3112           "vuid": "VUID-VkRenderPassCreateInfo-pNext-01928",
   3113           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and its <code>subpassCount</code> member is not zero, that member <strong class=\"purple\">must</strong> be equal to the value of <code>subpassCount</code>"
   3114         },
   3115         {
   3116           "vuid": "VUID-VkRenderPassCreateInfo-pNext-01929",
   3117           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, if its <code>dependencyCount</code> member is not zero, it <strong class=\"purple\">must</strong> be equal to <code>dependencyCount</code>"
   3118         },
   3119         {
   3120           "vuid": "VUID-VkRenderPassCreateInfo-pNext-01930",
   3121           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for each non-zero element of <code>pViewOffsets</code>, the <code>srcSubpass</code> and <code>dstSubpass</code> members of <code>pDependencies</code> at the same index <strong class=\"purple\">must</strong> not be equal"
   3122         },
   3123         {
   3124           "vuid": "VUID-VkRenderPassCreateInfo-pNext-02512",
   3125           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, for any element of <code>pDependencies</code> with a <code>dependencyFlags</code> member that doesn&#8217;t include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, the corresponding element of the <code>pViewOffsets</code> member of that <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a> instance <strong class=\"purple\">must</strong> be <code>0</code>"
   3126         },
   3127         {
   3128           "vuid": "VUID-VkRenderPassCreateInfo-pNext-02513",
   3129           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, elements of its <code>pViewMasks</code> member <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>"
   3130         },
   3131         {
   3132           "vuid": "VUID-VkRenderPassCreateInfo-pNext-02514",
   3133           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, the <code>dependencyFlags</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
   3134         },
   3135         {
   3136           "vuid": "VUID-VkRenderPassCreateInfo-pNext-02515",
   3137           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, and each element of its <code>pViewMasks</code> member is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   3138         },
   3139         {
   3140           "vuid": "VUID-VkRenderPassCreateInfo-pNext-02516",
   3141           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkRenderPassMultiviewCreateInfo\">VkRenderPassMultiviewCreateInfo</a>, each element of its <code>pViewMask</code> member <strong class=\"purple\">must</strong> not include a bit at a position greater than the value of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>"
   3142         }
   3143       ]
   3144     },
   3145     "VkRenderPassMultiviewCreateInfo": {
   3146       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   3147         {
   3148           "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-00841",
   3149           "text": " Each view index <strong class=\"purple\">must</strong> not be set in more than one element of <code>pCorrelationMasks</code>"
   3150         },
   3151         {
   3152           "vuid": "VUID-VkRenderPassMultiviewCreateInfo-sType-sType",
   3153           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO</code>"
   3154         },
   3155         {
   3156           "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewMasks-parameter",
   3157           "text": " If <code>subpassCount</code> is not <code>0</code>, <code>pViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> <code>uint32_t</code> values"
   3158         },
   3159         {
   3160           "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pViewOffsets-parameter",
   3161           "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pViewOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> <code>int32_t</code> values"
   3162         },
   3163         {
   3164           "vuid": "VUID-VkRenderPassMultiviewCreateInfo-pCorrelationMasks-parameter",
   3165           "text": " If <code>correlationMaskCount</code> is not <code>0</code>, <code>pCorrelationMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlationMaskCount</code> <code>uint32_t</code> values"
   3166         }
   3167       ]
   3168     },
   3169     "VkRenderPassFragmentDensityMapCreateInfoEXT": {
   3170       "(VK_EXT_fragment_density_map)": [
   3171         {
   3172           "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02547",
   3173           "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be less than <code>VkRenderPassCreateInfo</code>::<code>attachmentCount</code>"
   3174         },
   3175         {
   3176           "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02548",
   3177           "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> not be an element of <code>VkSubpassDescription</code>::<code>pInputAttachments</code>, <code>VkSubpassDescription</code>::<code>pColorAttachments</code>, <code>VkSubpassDescription</code>::<code>pResolveAttachments</code>, <code>VkSubpassDescription</code>::<code>pDepthStencilAttachment</code>, or <code>VkSubpassDescription</code>::<code>pPreserveAttachments</code> for any subpass"
   3178         },
   3179         {
   3180           "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02549",
   3181           "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> be equal to <code>VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT</code>, or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   3182         },
   3183         {
   3184           "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02550",
   3185           "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_LOAD</code> or <code>VK_ATTACHMENT_LOAD_OP_DONT_CARE</code>."
   3186         },
   3187         {
   3188           "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-02551",
   3189           "text": " If <code>fragmentDensityMapAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> reference an attachment with a <code>storeOp</code> equal to <code>VK_ATTACHMENT_STORE_OP_DONT_CARE</code>."
   3190         },
   3191         {
   3192           "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-sType-sType",
   3193           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT</code>"
   3194         },
   3195         {
   3196           "vuid": "VUID-VkRenderPassFragmentDensityMapCreateInfoEXT-fragmentDensityMapAttachment-parameter",
   3197           "text": " <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> be a valid <code>VkAttachmentReference</code> structure"
   3198         }
   3199       ]
   3200     },
   3201     "VkAttachmentDescription": {
   3202       "core": [
   3203         {
   3204           "vuid": "VUID-VkAttachmentDescription-finalLayout-00843",
   3205           "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
   3206         },
   3207         {
   3208           "vuid": "VUID-VkAttachmentDescription-flags-parameter",
   3209           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
   3210         },
   3211         {
   3212           "vuid": "VUID-VkAttachmentDescription-format-parameter",
   3213           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   3214         },
   3215         {
   3216           "vuid": "VUID-VkAttachmentDescription-samples-parameter",
   3217           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
   3218         },
   3219         {
   3220           "vuid": "VUID-VkAttachmentDescription-loadOp-parameter",
   3221           "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
   3222         },
   3223         {
   3224           "vuid": "VUID-VkAttachmentDescription-storeOp-parameter",
   3225           "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
   3226         },
   3227         {
   3228           "vuid": "VUID-VkAttachmentDescription-stencilLoadOp-parameter",
   3229           "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
   3230         },
   3231         {
   3232           "vuid": "VUID-VkAttachmentDescription-stencilStoreOp-parameter",
   3233           "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
   3234         },
   3235         {
   3236           "vuid": "VUID-VkAttachmentDescription-initialLayout-parameter",
   3237           "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   3238         },
   3239         {
   3240           "vuid": "VUID-VkAttachmentDescription-finalLayout-parameter",
   3241           "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   3242         }
   3243       ]
   3244     },
   3245     "VkRenderPassInputAttachmentAspectCreateInfo": {
   3246       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   3247         {
   3248           "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-sType-sType",
   3249           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO</code>"
   3250         },
   3251         {
   3252           "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-pAspectReferences-parameter",
   3253           "text": " <code>pAspectReferences</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>aspectReferenceCount</code> valid <code>VkInputAttachmentAspectReference</code> structures"
   3254         },
   3255         {
   3256           "vuid": "VUID-VkRenderPassInputAttachmentAspectCreateInfo-aspectReferenceCount-arraylength",
   3257           "text": " <code>aspectReferenceCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   3258         }
   3259       ]
   3260     },
   3261     "VkInputAttachmentAspectReference": {
   3262       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   3263         {
   3264           "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-01964",
   3265           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
   3266         },
   3267         {
   3268           "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-parameter",
   3269           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
   3270         },
   3271         {
   3272           "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-requiredbitmask",
   3273           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   3274         }
   3275       ],
   3276       "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_EXT_image_drm_format_modifier)": [
   3277         {
   3278           "vuid": "VUID-VkInputAttachmentAspectReference-aspectMask-02250",
   3279           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>."
   3280         }
   3281       ]
   3282     },
   3283     "VkSubpassDescription": {
   3284       "core": [
   3285         {
   3286           "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-00844",
   3287           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   3288         },
   3289         {
   3290           "vuid": "VUID-VkSubpassDescription-colorAttachmentCount-00845",
   3291           "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
   3292         },
   3293         {
   3294           "vuid": "VUID-VkSubpassDescription-loadOp-00846",
   3295           "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
   3296         },
   3297         {
   3298           "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00847",
   3299           "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
   3300         },
   3301         {
   3302           "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00848",
   3303           "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
   3304         },
   3305         {
   3306           "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00849",
   3307           "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
   3308         },
   3309         {
   3310           "vuid": "VUID-VkSubpassDescription-pResolveAttachments-00850",
   3311           "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment"
   3312         },
   3313         {
   3314           "vuid": "VUID-VkSubpassDescription-pColorAttachments-01417",
   3315           "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count"
   3316         },
   3317         {
   3318           "vuid": "VUID-VkSubpassDescription-pInputAttachments-02647",
   3319           "text": " All attachments in <code>pInputAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>."
   3320         },
   3321         {
   3322           "vuid": "VUID-VkSubpassDescription-pColorAttachments-02648",
   3323           "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
   3324         },
   3325         {
   3326           "vuid": "VUID-VkSubpassDescription-pResolveAttachments-02649",
   3327           "text": " All attachments in <code>pResolveAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have formats whose features contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>"
   3328         },
   3329         {
   3330           "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-02650",
   3331           "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code> and the attachment is not <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
   3332         },
   3333         {
   3334           "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-01418",
   3335           "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count"
   3336         },
   3337         {
   3338           "vuid": "VUID-VkSubpassDescription-attachment-00853",
   3339           "text": " The <code>attachment</code> member of each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
   3340         },
   3341         {
   3342           "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-00854",
   3343           "text": " Each element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description"
   3344         },
   3345         {
   3346           "vuid": "VUID-VkSubpassDescription-layout-02519",
   3347           "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>"
   3348         },
   3349         {
   3350           "vuid": "VUID-VkSubpassDescription-flags-parameter",
   3351           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
   3352         },
   3353         {
   3354           "vuid": "VUID-VkSubpassDescription-pipelineBindPoint-parameter",
   3355           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
   3356         },
   3357         {
   3358           "vuid": "VUID-VkSubpassDescription-pInputAttachments-parameter",
   3359           "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
   3360         },
   3361         {
   3362           "vuid": "VUID-VkSubpassDescription-pColorAttachments-parameter",
   3363           "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
   3364         },
   3365         {
   3366           "vuid": "VUID-VkSubpassDescription-pResolveAttachments-parameter",
   3367           "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference</code> structures"
   3368         },
   3369         {
   3370           "vuid": "VUID-VkSubpassDescription-pDepthStencilAttachment-parameter",
   3371           "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference</code> structure"
   3372         },
   3373         {
   3374           "vuid": "VUID-VkSubpassDescription-pPreserveAttachments-parameter",
   3375           "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values"
   3376         }
   3377       ],
   3378       "(VK_AMD_mixed_attachment_samples)": [
   3379         {
   3380           "vuid": "VUID-VkSubpassDescription-pColorAttachments-01506",
   3381           "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>"
   3382         }
   3383       ],
   3384       "(VK_NVX_multiview_per_view_attributes)": [
   3385         {
   3386           "vuid": "VUID-VkSubpassDescription-flags-00856",
   3387           "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>."
   3388         }
   3389       ]
   3390     },
   3391     "VkAttachmentReference": {
   3392       "core": [
   3393         {
   3394           "vuid": "VUID-VkAttachmentReference-layout-00857",
   3395           "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
   3396         },
   3397         {
   3398           "vuid": "VUID-VkAttachmentReference-layout-parameter",
   3399           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   3400         }
   3401       ]
   3402     },
   3403     "VkSubpassDependency": {
   3404       "core": [
   3405         {
   3406           "vuid": "VUID-VkSubpassDependency-srcSubpass-00858",
   3407           "text": " If <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
   3408         },
   3409         {
   3410           "vuid": "VUID-VkSubpassDependency-dstSubpass-00859",
   3411           "text": " If <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
   3412         },
   3413         {
   3414           "vuid": "VUID-VkSubpassDependency-srcStageMask-00860",
   3415           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   3416         },
   3417         {
   3418           "vuid": "VUID-VkSubpassDependency-dstStageMask-00861",
   3419           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   3420         },
   3421         {
   3422           "vuid": "VUID-VkSubpassDependency-srcStageMask-00862",
   3423           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   3424         },
   3425         {
   3426           "vuid": "VUID-VkSubpassDependency-dstStageMask-00863",
   3427           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   3428         },
   3429         {
   3430           "vuid": "VUID-VkSubpassDependency-srcSubpass-00864",
   3431           "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order"
   3432         },
   3433         {
   3434           "vuid": "VUID-VkSubpassDependency-srcSubpass-00865",
   3435           "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
   3436         },
   3437         {
   3438           "vuid": "VUID-VkSubpassDependency-srcSubpass-01989",
   3439           "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code>, <code>srcStageMask</code> and <code>dstStageMask</code> <strong class=\"purple\">must</strong> not set any bits that are neither <code>VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT</code>, nor one of the <a href=\"#synchronization-pipeline-stages-types\">graphics pipeline stages</a>"
   3440         },
   3441         {
   3442           "vuid": "VUID-VkSubpassDependency-srcSubpass-00867",
   3443           "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>"
   3444         },
   3445         {
   3446           "vuid": "VUID-VkSubpassDependency-srcAccessMask-00868",
   3447           "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
   3448         },
   3449         {
   3450           "vuid": "VUID-VkSubpassDependency-dstAccessMask-00869",
   3451           "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
   3452         },
   3453         {
   3454           "vuid": "VUID-VkSubpassDependency-srcSubpass-02243",
   3455           "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>"
   3456         },
   3457         {
   3458           "vuid": "VUID-VkSubpassDependency-srcStageMask-parameter",
   3459           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   3460         },
   3461         {
   3462           "vuid": "VUID-VkSubpassDependency-srcStageMask-requiredbitmask",
   3463           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   3464         },
   3465         {
   3466           "vuid": "VUID-VkSubpassDependency-dstStageMask-parameter",
   3467           "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   3468         },
   3469         {
   3470           "vuid": "VUID-VkSubpassDependency-dstStageMask-requiredbitmask",
   3471           "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   3472         },
   3473         {
   3474           "vuid": "VUID-VkSubpassDependency-srcAccessMask-parameter",
   3475           "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   3476         },
   3477         {
   3478           "vuid": "VUID-VkSubpassDependency-dstAccessMask-parameter",
   3479           "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   3480         },
   3481         {
   3482           "vuid": "VUID-VkSubpassDependency-dependencyFlags-parameter",
   3483           "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
   3484         }
   3485       ],
   3486       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   3487         {
   3488           "vuid": "VUID-VkSubpassDependency-dependencyFlags-02520",
   3489           "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
   3490         },
   3491         {
   3492           "vuid": "VUID-VkSubpassDependency-dependencyFlags-02521",
   3493           "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
   3494         },
   3495         {
   3496           "vuid": "VUID-VkSubpassDependency-srcSubpass-00872",
   3497           "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code> and that subpass has more than one bit set in the view mask, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
   3498         }
   3499       ],
   3500       "(VK_NV_mesh_shader)": [
   3501         {
   3502           "vuid": "VUID-VkSubpassDependency-srcStageMask-02099",
   3503           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   3504         },
   3505         {
   3506           "vuid": "VUID-VkSubpassDependency-srcStageMask-02100",
   3507           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   3508         },
   3509         {
   3510           "vuid": "VUID-VkSubpassDependency-dstStageMask-02101",
   3511           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   3512         },
   3513         {
   3514           "vuid": "VUID-VkSubpassDependency-dstStageMask-02102",
   3515           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   3516         }
   3517       ]
   3518     },
   3519     "vkCreateRenderPass2KHR": {
   3520       "(VK_KHR_create_renderpass2)": [
   3521         {
   3522           "vuid": "VUID-vkCreateRenderPass2KHR-device-parameter",
   3523           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   3524         },
   3525         {
   3526           "vuid": "VUID-vkCreateRenderPass2KHR-pCreateInfo-parameter",
   3527           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassCreateInfo2KHR</code> structure"
   3528         },
   3529         {
   3530           "vuid": "VUID-vkCreateRenderPass2KHR-pAllocator-parameter",
   3531           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   3532         },
   3533         {
   3534           "vuid": "VUID-vkCreateRenderPass2KHR-pRenderPass-parameter",
   3535           "text": " <code>pRenderPass</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRenderPass</code> handle"
   3536         }
   3537       ]
   3538     },
   3539     "VkRenderPassCreateInfo2KHR": {
   3540       "(VK_KHR_create_renderpass2)": [
   3541         {
   3542           "vuid": "VUID-VkRenderPassCreateInfo2KHR-None-03049",
   3543           "text": " If any two subpasses operate on attachments with overlapping ranges of the same <code>VkDeviceMemory</code> object, and at least one subpass writes to that area of <code>VkDeviceMemory</code>, a subpass dependency <strong class=\"purple\">must</strong> be included (either directly or via some intermediate subpasses) between them"
   3544         },
   3545         {
   3546           "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03050",
   3547           "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or the attachment indexed by any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is bound to a range of a <code>VkDeviceMemory</code> object that overlaps with any other attachment in any subpass (including the same subpass), the <code>VkAttachmentDescription2KHR</code> structures describing them <strong class=\"purple\">must</strong> include <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> in <code>flags</code>"
   3548         },
   3549         {
   3550           "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-03051",
   3551           "text": " If the <code>attachment</code> member of any element of <code>pInputAttachments</code>, <code>pColorAttachments</code>, <code>pResolveAttachments</code> or <code>pDepthStencilAttachment</code>, or any element of <code>pPreserveAttachments</code> in any given element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, it <strong class=\"purple\">must</strong> be less than <code>attachmentCount</code>"
   3552         },
   3553         {
   3554           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02522",
   3555           "text": " For any member of <code>pAttachments</code> with a <code>loadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>"
   3556         },
   3557         {
   3558           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-02523",
   3559           "text": " For any member of <code>pAttachments</code> with a <code>stencilLoadOp</code> equal to <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>, the first use of that attachment <strong class=\"purple\">must</strong> not specify a <code>layout</code> equal to <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>."
   3560         },
   3561         {
   3562           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03054",
   3563           "text": " For any element of <code>pDependencies</code>, if the <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>srcStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass."
   3564         },
   3565         {
   3566           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03055",
   3567           "text": " For any element of <code>pDependencies</code>, if the <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, all stage flags included in the <code>dstStageMask</code> member of that dependency <strong class=\"purple\">must</strong> be a pipeline stage supported by the <a href=\"#synchronization-pipeline-stages-types\">pipeline</a> identified by the <code>pipelineBindPoint</code> member of the source subpass."
   3568         },
   3569         {
   3570           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-03056",
   3571           "text": " The set of bits included in any element of <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> not overlap with the set of bits included in any other element of <code>pCorrelatedViewMasks</code>"
   3572         },
   3573         {
   3574           "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03057",
   3575           "text": " If the <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, <code>correlatedViewMaskCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   3576         },
   3577         {
   3578           "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03058",
   3579           "text": " The <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> <strong class=\"purple\">must</strong> either all be <code>0</code>, or all not be <code>0</code>"
   3580         },
   3581         {
   3582           "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-03059",
   3583           "text": " If the <a href=\"#VkSubpassDescription2KHR\">VkSubpassDescription2KHR</a>::<code>viewMask</code> member of all elements of <code>pSubpasses</code> is <code>0</code>, the <code>dependencyFlags</code> member of any element of <code>pDependencies</code> <strong class=\"purple\">must</strong> not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
   3584         },
   3585         {
   3586           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-03060",
   3587           "text": " For any element of <code>pDependencies</code> where its <code>srcSubpass</code> member equals its <code>dstSubpass</code> member, if the <code>viewMask</code> member of the corresponding element of <code>pSubpasses</code> includes more than one bit, its <code>dependencyFlags</code> member <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>"
   3588         },
   3589         {
   3590           "vuid": "VUID-VkRenderPassCreateInfo2KHR-viewMask-02524",
   3591           "text": " The <code>viewMask</code> member <strong class=\"purple\">must</strong> not include a bit at a position greater than the value of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxFramebufferLayers</code>"
   3592         },
   3593         {
   3594           "vuid": "VUID-VkRenderPassCreateInfo2KHR-attachment-02525",
   3595           "text": " If the <code>attachment</code> member of any element of the <code>pInputAttachments</code> member of any element of <code>pSubpasses</code> is not <code>VK_ATTACHMENT_UNUSED</code>, the <code>aspectMask</code> member of that element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> only include aspects that are present in images of the format specified by the element of <code>pAttachments</code> specified by <code>attachment</code>"
   3596         },
   3597         {
   3598           "vuid": "VUID-VkRenderPassCreateInfo2KHR-srcSubpass-02526",
   3599           "text": " The <code>srcSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
   3600         },
   3601         {
   3602           "vuid": "VUID-VkRenderPassCreateInfo2KHR-dstSubpass-02527",
   3603           "text": " The <code>dstSubpass</code> member of each element of <code>pDependencies</code> <strong class=\"purple\">must</strong> be less than <code>subpassCount</code>"
   3604         },
   3605         {
   3606           "vuid": "VUID-VkRenderPassCreateInfo2KHR-sType-sType",
   3607           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR</code>"
   3608         },
   3609         {
   3610           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pNext-pNext",
   3611           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   3612         },
   3613         {
   3614           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pAttachments-parameter",
   3615           "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkAttachmentDescription2KHR</code> structures"
   3616         },
   3617         {
   3618           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pSubpasses-parameter",
   3619           "text": " <code>pSubpasses</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>subpassCount</code> valid <code>VkSubpassDescription2KHR</code> structures"
   3620         },
   3621         {
   3622           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pDependencies-parameter",
   3623           "text": " If <code>dependencyCount</code> is not <code>0</code>, <code>pDependencies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dependencyCount</code> valid <code>VkSubpassDependency2KHR</code> structures"
   3624         },
   3625         {
   3626           "vuid": "VUID-VkRenderPassCreateInfo2KHR-pCorrelatedViewMasks-parameter",
   3627           "text": " If <code>correlatedViewMaskCount</code> is not <code>0</code>, <code>pCorrelatedViewMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>correlatedViewMaskCount</code> <code>uint32_t</code> values"
   3628         },
   3629         {
   3630           "vuid": "VUID-VkRenderPassCreateInfo2KHR-subpassCount-arraylength",
   3631           "text": " <code>subpassCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   3632         }
   3633       ]
   3634     },
   3635     "VkAttachmentDescription2KHR": {
   3636       "(VK_KHR_create_renderpass2)": [
   3637         {
   3638           "vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-03061",
   3639           "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
   3640         },
   3641         {
   3642           "vuid": "VUID-VkAttachmentDescription2KHR-sType-sType",
   3643           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR</code>"
   3644         },
   3645         {
   3646           "vuid": "VUID-VkAttachmentDescription2KHR-flags-parameter",
   3647           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAttachmentDescriptionFlagBits\">VkAttachmentDescriptionFlagBits</a> values"
   3648         },
   3649         {
   3650           "vuid": "VUID-VkAttachmentDescription2KHR-format-parameter",
   3651           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   3652         },
   3653         {
   3654           "vuid": "VUID-VkAttachmentDescription2KHR-samples-parameter",
   3655           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
   3656         },
   3657         {
   3658           "vuid": "VUID-VkAttachmentDescription2KHR-loadOp-parameter",
   3659           "text": " <code>loadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
   3660         },
   3661         {
   3662           "vuid": "VUID-VkAttachmentDescription2KHR-storeOp-parameter",
   3663           "text": " <code>storeOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
   3664         },
   3665         {
   3666           "vuid": "VUID-VkAttachmentDescription2KHR-stencilLoadOp-parameter",
   3667           "text": " <code>stencilLoadOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentLoadOp\">VkAttachmentLoadOp</a> value"
   3668         },
   3669         {
   3670           "vuid": "VUID-VkAttachmentDescription2KHR-stencilStoreOp-parameter",
   3671           "text": " <code>stencilStoreOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAttachmentStoreOp\">VkAttachmentStoreOp</a> value"
   3672         },
   3673         {
   3674           "vuid": "VUID-VkAttachmentDescription2KHR-initialLayout-parameter",
   3675           "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   3676         },
   3677         {
   3678           "vuid": "VUID-VkAttachmentDescription2KHR-finalLayout-parameter",
   3679           "text": " <code>finalLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   3680         }
   3681       ]
   3682     },
   3683     "VkSubpassDescription2KHR": {
   3684       "(VK_KHR_create_renderpass2)": [
   3685         {
   3686           "vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-03062",
   3687           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   3688         },
   3689         {
   3690           "vuid": "VUID-VkSubpassDescription2KHR-colorAttachmentCount-03063",
   3691           "text": " <code>colorAttachmentCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxColorAttachments</code>"
   3692         },
   3693         {
   3694           "vuid": "VUID-VkSubpassDescription2KHR-loadOp-03064",
   3695           "text": " If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then <code>loadOp</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
   3696         },
   3697         {
   3698           "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03065",
   3699           "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that does not have the value <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>"
   3700         },
   3701         {
   3702           "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03066",
   3703           "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, for each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code>, the corresponding color attachment <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
   3704         },
   3705         {
   3706           "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03067",
   3707           "text": " If <code>pResolveAttachments</code> is not <code>NULL</code>, each resolve attachment that is not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
   3708         },
   3709         {
   3710           "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-03068",
   3711           "text": " Any given element of <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> have the same <a href=\"#VkFormat\">VkFormat</a> as its corresponding color attachment"
   3712         },
   3713         {
   3714           "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03069",
   3715           "text": " All attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have the same sample count"
   3716         },
   3717         {
   3718           "vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-03071",
   3719           "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>pDepthStencilAttachment</code> is not <code>VK_ATTACHMENT_UNUSED</code> and any attachments in <code>pColorAttachments</code> are not <code>VK_ATTACHMENT_UNUSED</code>, they <strong class=\"purple\">must</strong> have the same sample count"
   3720         },
   3721         {
   3722           "vuid": "VUID-VkSubpassDescription2KHR-attachment-03073",
   3723           "text": " The <code>attachment</code> member of any element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not be <code>VK_ATTACHMENT_UNUSED</code>"
   3724         },
   3725         {
   3726           "vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-03074",
   3727           "text": " Any given element of <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> not also be an element of any other member of the subpass description"
   3728         },
   3729         {
   3730           "vuid": "VUID-VkSubpassDescription2KHR-layout-02528",
   3731           "text": " If any attachment is used by more than one <a href=\"#VkAttachmentReference\">VkAttachmentReference</a> member, then each use <strong class=\"purple\">must</strong> use the same <code>layout</code>"
   3732         },
   3733         {
   3734           "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03175",
   3735           "text": " The <code>aspectMask</code> member of any element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a>"
   3736         },
   3737         {
   3738           "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-03176",
   3739           "text": " The <code>aspectMask</code> member of any element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   3740         },
   3741         {
   3742           "vuid": "VUID-VkSubpassDescription2KHR-aspectMask-02529",
   3743           "text": " The <code>aspectMask</code> member of each element of <code>pInputAttachments</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
   3744         },
   3745         {
   3746           "vuid": "VUID-VkSubpassDescription2KHR-sType-sType",
   3747           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR</code>"
   3748         },
   3749         {
   3750           "vuid": "VUID-VkSubpassDescription2KHR-flags-parameter",
   3751           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSubpassDescriptionFlagBits\">VkSubpassDescriptionFlagBits</a> values"
   3752         },
   3753         {
   3754           "vuid": "VUID-VkSubpassDescription2KHR-pipelineBindPoint-parameter",
   3755           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
   3756         },
   3757         {
   3758           "vuid": "VUID-VkSubpassDescription2KHR-pInputAttachments-parameter",
   3759           "text": " If <code>inputAttachmentCount</code> is not <code>0</code>, <code>pInputAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>inputAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
   3760         },
   3761         {
   3762           "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-parameter",
   3763           "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, <code>pColorAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
   3764         },
   3765         {
   3766           "vuid": "VUID-VkSubpassDescription2KHR-pResolveAttachments-parameter",
   3767           "text": " If <code>colorAttachmentCount</code> is not <code>0</code>, and <code>pResolveAttachments</code> is not <code>NULL</code>, <code>pResolveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>colorAttachmentCount</code> valid <code>VkAttachmentReference2KHR</code> structures"
   3768         },
   3769         {
   3770           "vuid": "VUID-VkSubpassDescription2KHR-pDepthStencilAttachment-parameter",
   3771           "text": " If <code>pDepthStencilAttachment</code> is not <code>NULL</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference2KHR</code> structure"
   3772         },
   3773         {
   3774           "vuid": "VUID-VkSubpassDescription2KHR-pPreserveAttachments-parameter",
   3775           "text": " If <code>preserveAttachmentCount</code> is not <code>0</code>, <code>pPreserveAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>preserveAttachmentCount</code> <code>uint32_t</code> values"
   3776         }
   3777       ],
   3778       "(VK_KHR_create_renderpass2)+(VK_AMD_mixed_attachment_samples)": [
   3779         {
   3780           "vuid": "VUID-VkSubpassDescription2KHR-pColorAttachments-03070",
   3781           "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, all attachments in <code>pColorAttachments</code> that are not <code>VK_ATTACHMENT_UNUSED</code> <strong class=\"purple\">must</strong> have a sample count that is smaller than or equal to the sample count of <code>pDepthStencilAttachment</code> if it is not <code>VK_ATTACHMENT_UNUSED</code>"
   3782         }
   3783       ],
   3784       "(VK_KHR_create_renderpass2)+(VK_NVX_multiview_per_view_attributes)": [
   3785         {
   3786           "vuid": "VUID-VkSubpassDescription2KHR-flags-03076",
   3787           "text": " If <code>flags</code> includes <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX</code>, it <strong class=\"purple\">must</strong> also include <code>VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX</code>."
   3788         }
   3789       ]
   3790     },
   3791     "VkSubpassDescriptionDepthStencilResolveKHR": {
   3792       "(VK_KHR_create_renderpass2)+(VK_KHR_depth_stencil_resolve)": [
   3793         {
   3794           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03177",
   3795           "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have the value <code>VK_ATTACHMENT_UNUSED</code>"
   3796         },
   3797         {
   3798           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03178",
   3799           "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> not both be <code>VK_RESOLVE_MODE_NONE_KHR</code>"
   3800         },
   3801         {
   3802           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03179",
   3803           "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> not have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
   3804         },
   3805         {
   3806           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03180",
   3807           "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> have a sample count of <code>VK_SAMPLE_COUNT_1_BIT</code>"
   3808         },
   3809         {
   3810           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-02651",
   3811           "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code> and does not have the value <code>VK_ATTACHMENT_UNUSED</code> then it <strong class=\"purple\">must</strong> have a format whose features contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
   3812         },
   3813         {
   3814           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03181",
   3815           "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a depth component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a depth component with the same number of bits and numerical type"
   3816         },
   3817         {
   3818           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03182",
   3819           "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has a stencil component, then the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilAttachment</code> <strong class=\"purple\">must</strong> have a stencil component with the same number of bits and numerical type"
   3820         },
   3821         {
   3822           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-03183",
   3823           "text": " The value of <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>supportedDepthResolveModes</code> or <code>VK_RESOLVE_MODE_NONE_KHR</code>"
   3824         },
   3825         {
   3826           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-03184",
   3827           "text": " The value of <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be one of the bits set in <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>supportedStencilResolveModes</code> or <code>VK_RESOLVE_MODE_NONE_KHR</code>"
   3828         },
   3829         {
   3830           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03185",
   3831           "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolve</code> is <code>VK_FALSE</code>, and <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolveNone</code> is <code>VK_FALSE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical"
   3832         },
   3833         {
   3834           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-03186",
   3835           "text": " If the <a href=\"#VkFormat\">VkFormat</a> of <code>pDepthStencilResolveAttachment</code> has both depth and stencil components, <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolve</code> is <code>VK_FALSE</code> and <a href=\"#VkPhysicalDeviceDepthStencilResolvePropertiesKHR\">VkPhysicalDeviceDepthStencilResolvePropertiesKHR</a>::<code>independentResolveNone</code> is <code>VK_TRUE</code>, then the values of <code>depthResolveMode</code> and <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be identical or one of them <strong class=\"purple\">must</strong> be <code>VK_RESOLVE_MODE_NONE_KHR</code>"
   3836         },
   3837         {
   3838           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-sType-sType",
   3839           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR</code>"
   3840         },
   3841         {
   3842           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-depthResolveMode-parameter",
   3843           "text": " <code>depthResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBitsKHR\">VkResolveModeFlagBitsKHR</a> value"
   3844         },
   3845         {
   3846           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-stencilResolveMode-parameter",
   3847           "text": " <code>stencilResolveMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkResolveModeFlagBitsKHR\">VkResolveModeFlagBitsKHR</a> value"
   3848         },
   3849         {
   3850           "vuid": "VUID-VkSubpassDescriptionDepthStencilResolveKHR-pDepthStencilResolveAttachment-parameter",
   3851           "text": " If <code>pDepthStencilResolveAttachment</code> is not <code>NULL</code>, <code>pDepthStencilResolveAttachment</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAttachmentReference2KHR</code> structure"
   3852         }
   3853       ]
   3854     },
   3855     "VkAttachmentReference2KHR": {
   3856       "(VK_KHR_create_renderpass2)": [
   3857         {
   3858           "vuid": "VUID-VkAttachmentReference2KHR-layout-03077",
   3859           "text": " If <code>attachment</code> is not <code>VK_ATTACHMENT_UNUSED</code>, <code>layout</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>"
   3860         },
   3861         {
   3862           "vuid": "VUID-VkAttachmentReference2KHR-sType-sType",
   3863           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR</code>"
   3864         },
   3865         {
   3866           "vuid": "VUID-VkAttachmentReference2KHR-layout-parameter",
   3867           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   3868         }
   3869       ]
   3870     },
   3871     "VkSubpassDependency2KHR": {
   3872       "(VK_KHR_create_renderpass2)": [
   3873         {
   3874           "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03078",
   3875           "text": " If <code>srcSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
   3876         },
   3877         {
   3878           "vuid": "VUID-VkSubpassDependency2KHR-dstSubpass-03079",
   3879           "text": " If <code>dstSubpass</code> is not <code>VK_SUBPASS_EXTERNAL</code>, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not include <code>VK_PIPELINE_STAGE_HOST_BIT</code>"
   3880         },
   3881         {
   3882           "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03080",
   3883           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   3884         },
   3885         {
   3886           "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03081",
   3887           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT</code>"
   3888         },
   3889         {
   3890           "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-03082",
   3891           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   3892         },
   3893         {
   3894           "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-03083",
   3895           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT</code> or <code>VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT</code>"
   3896         },
   3897         {
   3898           "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03084",
   3899           "text": " <code>srcSubpass</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dstSubpass</code>, unless one of them is <code>VK_SUBPASS_EXTERNAL</code>, to avoid cyclic dependencies and ensure a valid execution order"
   3900         },
   3901         {
   3902           "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03085",
   3903           "text": " <code>srcSubpass</code> and <code>dstSubpass</code> <strong class=\"purple\">must</strong> not both be equal to <code>VK_SUBPASS_EXTERNAL</code>"
   3904         },
   3905         {
   3906           "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02244",
   3907           "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code>, <code>srcStageMask</code> and <code>dstStageMask</code> <strong class=\"purple\">must</strong> not set any bits that are neither <code>VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT</code>, nor one of the <a href=\"#synchronization-pipeline-stages-types\">graphics pipeline stages</a>"
   3908         },
   3909         {
   3910           "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-03087",
   3911           "text": " If <code>srcSubpass</code> is equal to <code>dstSubpass</code> and not all of the stages in <code>srcStageMask</code> and <code>dstStageMask</code> are <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stages</a>, the <a href=\"#synchronization-pipeline-stages-order\">logically latest</a> pipeline stage in <code>srcStageMask</code> <strong class=\"purple\">must</strong> be <a href=\"#synchronization-pipeline-stages-order\">logically earlier</a> than or equal to the <a href=\"#synchronization-pipeline-stages-order\">logically earliest</a> pipeline stage in <code>dstStageMask</code>"
   3912         },
   3913         {
   3914           "vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-03088",
   3915           "text": " Any access flag included in <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>srcStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
   3916         },
   3917         {
   3918           "vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-03089",
   3919           "text": " Any access flag included in <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be supported by one of the pipeline stages in <code>dstStageMask</code>, as specified in the <a href=\"#synchronization-access-types-supported\">table of supported access types</a>"
   3920         },
   3921         {
   3922           "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03090",
   3923           "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
   3924         },
   3925         {
   3926           "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03091",
   3927           "text": " If <code>dependencyFlags</code> includes <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>dstSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>VK_SUBPASS_EXTERNAL</code>"
   3928         },
   3929         {
   3930           "vuid": "VUID-VkSubpassDependency2KHR-srcSubpass-02245",
   3931           "text": " If <code>srcSubpass</code> equals <code>dstSubpass</code>, and <code>srcStageMask</code> and <code>dstStageMask</code> both include a <a href=\"#synchronization-framebuffer-regions\">framebuffer-space stage</a>, then <code>dependencyFlags</code> <strong class=\"purple\">must</strong> include <code>VK_DEPENDENCY_BY_REGION_BIT</code>"
   3932         },
   3933         {
   3934           "vuid": "VUID-VkSubpassDependency2KHR-viewOffset-02530",
   3935           "text": " If <code>viewOffset</code> is not equal to <code>0</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>dstSubpass</code>"
   3936         },
   3937         {
   3938           "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-03092",
   3939           "text": " If <code>dependencyFlags</code> does not include <code>VK_DEPENDENCY_VIEW_LOCAL_BIT</code>, <code>viewOffset</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   3940         },
   3941         {
   3942           "vuid": "VUID-VkSubpassDependency2KHR-viewOffset-03093",
   3943           "text": " If <code>viewOffset</code> is not <code>0</code>, <code>srcSubpass</code> <strong class=\"purple\">must</strong> not be equal to <code>dstSubpass</code>."
   3944         },
   3945         {
   3946           "vuid": "VUID-VkSubpassDependency2KHR-sType-sType",
   3947           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR</code>"
   3948         },
   3949         {
   3950           "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-parameter",
   3951           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   3952         },
   3953         {
   3954           "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-requiredbitmask",
   3955           "text": " <code>srcStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   3956         },
   3957         {
   3958           "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-parameter",
   3959           "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> values"
   3960         },
   3961         {
   3962           "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-requiredbitmask",
   3963           "text": " <code>dstStageMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   3964         },
   3965         {
   3966           "vuid": "VUID-VkSubpassDependency2KHR-srcAccessMask-parameter",
   3967           "text": " <code>srcAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   3968         },
   3969         {
   3970           "vuid": "VUID-VkSubpassDependency2KHR-dstAccessMask-parameter",
   3971           "text": " <code>dstAccessMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkAccessFlagBits\">VkAccessFlagBits</a> values"
   3972         },
   3973         {
   3974           "vuid": "VUID-VkSubpassDependency2KHR-dependencyFlags-parameter",
   3975           "text": " <code>dependencyFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDependencyFlagBits\">VkDependencyFlagBits</a> values"
   3976         }
   3977       ],
   3978       "(VK_KHR_create_renderpass2)+(VK_NV_mesh_shader)": [
   3979         {
   3980           "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02103",
   3981           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   3982         },
   3983         {
   3984           "vuid": "VUID-VkSubpassDependency2KHR-srcStageMask-02104",
   3985           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>srcStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   3986         },
   3987         {
   3988           "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02105",
   3989           "text": " If the <a href=\"#features-meshShader\">mesh shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV</code>"
   3990         },
   3991         {
   3992           "vuid": "VUID-VkSubpassDependency2KHR-dstStageMask-02106",
   3993           "text": " If the <a href=\"#features-taskShader\">task shaders</a> feature is not enabled, <code>dstStageMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV</code>"
   3994         }
   3995       ]
   3996     },
   3997     "vkDestroyRenderPass": {
   3998       "core": [
   3999         {
   4000           "vuid": "VUID-vkDestroyRenderPass-renderPass-00873",
   4001           "text": " All submitted commands that refer to <code>renderPass</code> <strong class=\"purple\">must</strong> have completed execution"
   4002         },
   4003         {
   4004           "vuid": "VUID-vkDestroyRenderPass-renderPass-00874",
   4005           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   4006         },
   4007         {
   4008           "vuid": "VUID-vkDestroyRenderPass-renderPass-00875",
   4009           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>renderPass</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4010         },
   4011         {
   4012           "vuid": "VUID-vkDestroyRenderPass-device-parameter",
   4013           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4014         },
   4015         {
   4016           "vuid": "VUID-vkDestroyRenderPass-renderPass-parameter",
   4017           "text": " If <code>renderPass</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
   4018         },
   4019         {
   4020           "vuid": "VUID-vkDestroyRenderPass-pAllocator-parameter",
   4021           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   4022         },
   4023         {
   4024           "vuid": "VUID-vkDestroyRenderPass-renderPass-parent",
   4025           "text": " If <code>renderPass</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   4026         }
   4027       ]
   4028     },
   4029     "vkCreateFramebuffer": {
   4030       "core": [
   4031         {
   4032           "vuid": "VUID-vkCreateFramebuffer-device-parameter",
   4033           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4034         },
   4035         {
   4036           "vuid": "VUID-vkCreateFramebuffer-pCreateInfo-parameter",
   4037           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkFramebufferCreateInfo</code> structure"
   4038         },
   4039         {
   4040           "vuid": "VUID-vkCreateFramebuffer-pAllocator-parameter",
   4041           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   4042         },
   4043         {
   4044           "vuid": "VUID-vkCreateFramebuffer-pFramebuffer-parameter",
   4045           "text": " <code>pFramebuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFramebuffer</code> handle"
   4046         }
   4047       ]
   4048     },
   4049     "VkFramebufferCreateInfo": {
   4050       "core": [
   4051         {
   4052           "vuid": "VUID-VkFramebufferCreateInfo-attachmentCount-00876",
   4053           "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be equal to the attachment count specified in <code>renderPass</code>"
   4054         },
   4055         {
   4056           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00877",
   4057           "text": " Each element of <code>pAttachments</code> that is used as a color attachment or resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>"
   4058         },
   4059         {
   4060           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02633",
   4061           "text": " Each element of <code>pAttachments</code> that is used as a depth/stencil attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
   4062         },
   4063         {
   4064           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00879",
   4065           "text": " Each element of <code>pAttachments</code> that is used as an input attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
   4066         },
   4067         {
   4068           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00880",
   4069           "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with an <a href=\"#VkFormat\">VkFormat</a> value that matches the <a href=\"#VkFormat\">VkFormat</a> specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>"
   4070         },
   4071         {
   4072           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00881",
   4073           "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value that matches the <code>samples</code> value specified by the corresponding <code>VkAttachmentDescription</code> in <code>renderPass</code>"
   4074         },
   4075         {
   4076           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00883",
   4077           "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> only specify a single mip level"
   4078         },
   4079         {
   4080           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00884",
   4081           "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
   4082         },
   4083         {
   4084           "vuid": "VUID-VkFramebufferCreateInfo-width-00885",
   4085           "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
   4086         },
   4087         {
   4088           "vuid": "VUID-VkFramebufferCreateInfo-width-00886",
   4089           "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
   4090         },
   4091         {
   4092           "vuid": "VUID-VkFramebufferCreateInfo-height-00887",
   4093           "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
   4094         },
   4095         {
   4096           "vuid": "VUID-VkFramebufferCreateInfo-height-00888",
   4097           "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
   4098         },
   4099         {
   4100           "vuid": "VUID-VkFramebufferCreateInfo-layers-00889",
   4101           "text": " <code>layers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
   4102         },
   4103         {
   4104           "vuid": "VUID-VkFramebufferCreateInfo-layers-00890",
   4105           "text": " <code>layers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferLayers</code>"
   4106         },
   4107         {
   4108           "vuid": "VUID-VkFramebufferCreateInfo-sType-sType",
   4109           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO</code>"
   4110         },
   4111         {
   4112           "vuid": "VUID-VkFramebufferCreateInfo-pNext-pNext",
   4113           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4114         },
   4115         {
   4116           "vuid": "VUID-VkFramebufferCreateInfo-flags-zerobitmask",
   4117           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   4118         },
   4119         {
   4120           "vuid": "VUID-VkFramebufferCreateInfo-renderPass-parameter",
   4121           "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
   4122         },
   4123         {
   4124           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-parameter",
   4125           "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkImageView</code> handles"
   4126         },
   4127         {
   4128           "vuid": "VUID-VkFramebufferCreateInfo-commonparent",
   4129           "text": " Both of <code>renderPass</code>, and the elements of <code>pAttachments</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   4130         }
   4131       ],
   4132       "(VK_KHR_depth_stencil_resolve)": [
   4133         {
   4134           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02634",
   4135           "text": " Each element of <code>pAttachments</code> that is used as a depth/stencil resolve attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
   4136         }
   4137       ],
   4138       "(VK_EXT_fragment_density_map)": [
   4139         {
   4140           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02552",
   4141           "text": " Each element of <code>pAttachments</code> that is used as a fragment density map attachment by <code>renderPass</code> <strong class=\"purple\">must</strong> not have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>."
   4142         },
   4143         {
   4144           "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02553",
   4145           "text": " If <code>renderPass</code> has a fragment density map attachment and <a href=\"#features-nonsubsampledimages\">non-subsample image feature</a> is not enabled, each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have been created with a <code>flags</code> value including <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code> unless that element is the fragment density map attachment."
   4146         },
   4147         {
   4148           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02554",
   4149           "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension except for any element that is referenced by <code>fragmentDensityMapAttachment</code>"
   4150         },
   4151         {
   4152           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02555",
   4153           "text": " An element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a width at least as large as \\(\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\rceil\\)"
   4154         },
   4155         {
   4156           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-02556",
   4157           "text": " An element of <code>pAttachments</code> that is referenced by <code>fragmentDensityMapAttachment</code> <strong class=\"purple\">must</strong> have a height at least as large as \\(\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\rceil\\)"
   4158         }
   4159       ],
   4160       "!(VK_EXT_fragment_density_map)": [
   4161         {
   4162           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00882",
   4163           "text": " Each element of <code>pAttachments</code> <strong class=\"purple\">must</strong> have dimensions at least as large as the corresponding framebuffer dimension"
   4164         }
   4165       ],
   4166       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   4167         {
   4168           "vuid": "VUID-VkFramebufferCreateInfo-pAttachments-00891",
   4169           "text": " Each element of <code>pAttachments</code> that is a 2D or 2D array image view taken from a 3D image <strong class=\"purple\">must</strong> not be a depth/stencil format"
   4170         }
   4171       ],
   4172       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   4173         {
   4174           "vuid": "VUID-VkFramebufferCreateInfo-renderPass-02531",
   4175           "text": " If <code>renderPass</code> was specified with non-zero view masks, <code>layers</code> <strong class=\"purple\">must</strong> be greater than or equal to the greatest position of any bit included in any of those view masks"
   4176         }
   4177       ]
   4178     },
   4179     "vkDestroyFramebuffer": {
   4180       "core": [
   4181         {
   4182           "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00892",
   4183           "text": " All submitted commands that refer to <code>framebuffer</code> <strong class=\"purple\">must</strong> have completed execution"
   4184         },
   4185         {
   4186           "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00893",
   4187           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   4188         },
   4189         {
   4190           "vuid": "VUID-vkDestroyFramebuffer-framebuffer-00894",
   4191           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>framebuffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4192         },
   4193         {
   4194           "vuid": "VUID-vkDestroyFramebuffer-device-parameter",
   4195           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4196         },
   4197         {
   4198           "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parameter",
   4199           "text": " If <code>framebuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle"
   4200         },
   4201         {
   4202           "vuid": "VUID-vkDestroyFramebuffer-pAllocator-parameter",
   4203           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   4204         },
   4205         {
   4206           "vuid": "VUID-vkDestroyFramebuffer-framebuffer-parent",
   4207           "text": " If <code>framebuffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   4208         }
   4209       ]
   4210     },
   4211     "vkCmdBeginRenderPass": {
   4212       "core": [
   4213         {
   4214           "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00895",
   4215           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>"
   4216         },
   4217         {
   4218           "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00897",
   4219           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
   4220         },
   4221         {
   4222           "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00898",
   4223           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>"
   4224         },
   4225         {
   4226           "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00899",
   4227           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>"
   4228         },
   4229         {
   4230           "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00900",
   4231           "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>"
   4232         },
   4233         {
   4234           "vuid": "VUID-vkCmdBeginRenderPass-srcStageMask-00901",
   4235           "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from"
   4236         },
   4237         {
   4238           "vuid": "VUID-vkCmdBeginRenderPass-framebuffer-02532",
   4239           "text": " For any attachment in <code>framebuffer</code> that is used by <code>renderPass</code> and is bound to memory locations that are also bound to another attachment used by <code>renderPass</code>, and if at least one of those uses causes either attachment to be written to, both attachments <strong class=\"purple\">must</strong> have had the <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> set"
   4240         },
   4241         {
   4242           "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-parameter",
   4243           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   4244         },
   4245         {
   4246           "vuid": "VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter",
   4247           "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure"
   4248         },
   4249         {
   4250           "vuid": "VUID-vkCmdBeginRenderPass-contents-parameter",
   4251           "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
   4252         },
   4253         {
   4254           "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-recording",
   4255           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   4256         },
   4257         {
   4258           "vuid": "VUID-vkCmdBeginRenderPass-commandBuffer-cmdpool",
   4259           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   4260         },
   4261         {
   4262           "vuid": "VUID-vkCmdBeginRenderPass-renderpass",
   4263           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   4264         },
   4265         {
   4266           "vuid": "VUID-vkCmdBeginRenderPass-bufferlevel",
   4267           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
   4268         }
   4269       ],
   4270       "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   4271         {
   4272           "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-00896",
   4273           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
   4274         }
   4275       ],
   4276       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   4277         {
   4278           "vuid": "VUID-vkCmdBeginRenderPass-initialLayout-01758",
   4279           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
   4280         }
   4281       ]
   4282     },
   4283     "vkCmdBeginRenderPass2KHR": {
   4284       "(VK_KHR_create_renderpass2)": [
   4285         {
   4286           "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03094",
   4287           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>"
   4288         },
   4289         {
   4290           "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03096",
   4291           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL</code>, or <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>"
   4292         },
   4293         {
   4294           "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03097",
   4295           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
   4296         },
   4297         {
   4298           "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03098",
   4299           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code>"
   4300         },
   4301         {
   4302           "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03099",
   4303           "text": " If any of the <code>initialLayout</code> or <code>finalLayout</code> member of the <code>VkAttachmentDescription</code> structures or the <code>layout</code> member of the <code>VkAttachmentReference</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> then the corresponding attachment image view of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code>"
   4304         },
   4305         {
   4306           "vuid": "VUID-vkCmdBeginRenderPass2KHR-initialLayout-03100",
   4307           "text": " If any of the <code>initialLayout</code> members of the <code>VkAttachmentDescription</code> structures specified when creating the render pass specified in the <code>renderPass</code> member of <code>pRenderPassBegin</code> is not <code>VK_IMAGE_LAYOUT_UNDEFINED</code>, then each such <code>initialLayout</code> <strong class=\"purple\">must</strong> be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the <code>framebuffer</code> member of <code>pRenderPassBegin</code>"
   4308         },
   4309         {
   4310           "vuid": "VUID-vkCmdBeginRenderPass2KHR-srcStageMask-03101",
   4311           "text": " The <code>srcStageMask</code> and <code>dstStageMask</code> members of any element of the <code>pDependencies</code> member of <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> used to create <code>renderPass</code> <strong class=\"purple\">must</strong> be supported by the capabilities of the queue family identified by the <code>queueFamilyIndex</code> member of the <a href=\"#VkCommandPoolCreateInfo\">VkCommandPoolCreateInfo</a> used to create the command pool which <code>commandBuffer</code> was allocated from"
   4312         },
   4313         {
   4314           "vuid": "VUID-vkCmdBeginRenderPass2KHR-framebuffer-02533",
   4315           "text": " For any attachment in <code>framebuffer</code> that is used by <code>renderPass</code> and is bound to memory locations that are also bound to another attachment used by <code>renderPass</code>, and if at least one of those uses causes either attachment to be written to, both attachments <strong class=\"purple\">must</strong> have had the <code>VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT</code> set"
   4316         },
   4317         {
   4318           "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-parameter",
   4319           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   4320         },
   4321         {
   4322           "vuid": "VUID-vkCmdBeginRenderPass2KHR-pRenderPassBegin-parameter",
   4323           "text": " <code>pRenderPassBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkRenderPassBeginInfo</code> structure"
   4324         },
   4325         {
   4326           "vuid": "VUID-vkCmdBeginRenderPass2KHR-pSubpassBeginInfo-parameter",
   4327           "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassBeginInfoKHR</code> structure"
   4328         },
   4329         {
   4330           "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-recording",
   4331           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   4332         },
   4333         {
   4334           "vuid": "VUID-vkCmdBeginRenderPass2KHR-commandBuffer-cmdpool",
   4335           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   4336         },
   4337         {
   4338           "vuid": "VUID-vkCmdBeginRenderPass2KHR-renderpass",
   4339           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   4340         },
   4341         {
   4342           "vuid": "VUID-vkCmdBeginRenderPass2KHR-bufferlevel",
   4343           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
   4344         }
   4345       ]
   4346     },
   4347     "VkRenderPassBeginInfo": {
   4348       "core": [
   4349         {
   4350           "vuid": "VUID-VkRenderPassBeginInfo-clearValueCount-00902",
   4351           "text": " <code>clearValueCount</code> <strong class=\"purple\">must</strong> be greater than the largest attachment index in <code>renderPass</code> that specifies a <code>loadOp</code> (or <code>stencilLoadOp</code>, if the attachment has a depth/stencil format) of <code>VK_ATTACHMENT_LOAD_OP_CLEAR</code>"
   4352         },
   4353         {
   4354           "vuid": "VUID-VkRenderPassBeginInfo-renderPass-00904",
   4355           "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkFramebufferCreateInfo</code> structure specified when creating <code>framebuffer</code>."
   4356         },
   4357         {
   4358           "vuid": "VUID-VkRenderPassBeginInfo-sType-sType",
   4359           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO</code>"
   4360         },
   4361         {
   4362           "vuid": "VUID-VkRenderPassBeginInfo-pNext-pNext",
   4363           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupRenderPassBeginInfo\">VkDeviceGroupRenderPassBeginInfo</a> or <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a>"
   4364         },
   4365         {
   4366           "vuid": "VUID-VkRenderPassBeginInfo-sType-unique",
   4367           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   4368         },
   4369         {
   4370           "vuid": "VUID-VkRenderPassBeginInfo-renderPass-parameter",
   4371           "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
   4372         },
   4373         {
   4374           "vuid": "VUID-VkRenderPassBeginInfo-framebuffer-parameter",
   4375           "text": " <code>framebuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkFramebuffer</code> handle"
   4376         },
   4377         {
   4378           "vuid": "VUID-VkRenderPassBeginInfo-pClearValues-parameter",
   4379           "text": " If <code>clearValueCount</code> is not <code>0</code>, <code>pClearValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>clearValueCount</code> <code>VkClearValue</code> unions"
   4380         },
   4381         {
   4382           "vuid": "VUID-VkRenderPassBeginInfo-commonparent",
   4383           "text": " Both of <code>framebuffer</code>, and <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   4384         }
   4385       ]
   4386     },
   4387     "VkRenderPassSampleLocationsBeginInfoEXT": {
   4388       "(VK_EXT_sample_locations)": [
   4389         {
   4390           "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-sType-sType",
   4391           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT</code>"
   4392         },
   4393         {
   4394           "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pAttachmentInitialSampleLocations-parameter",
   4395           "text": " If <code>attachmentInitialSampleLocationsCount</code> is not <code>0</code>, <code>pAttachmentInitialSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentInitialSampleLocationsCount</code> valid <code>VkAttachmentSampleLocationsEXT</code> structures"
   4396         },
   4397         {
   4398           "vuid": "VUID-VkRenderPassSampleLocationsBeginInfoEXT-pPostSubpassSampleLocations-parameter",
   4399           "text": " If <code>postSubpassSampleLocationsCount</code> is not <code>0</code>, <code>pPostSubpassSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>postSubpassSampleLocationsCount</code> valid <code>VkSubpassSampleLocationsEXT</code> structures"
   4400         }
   4401       ]
   4402     },
   4403     "VkAttachmentSampleLocationsEXT": {
   4404       "(VK_EXT_sample_locations)": [
   4405         {
   4406           "vuid": "VUID-VkAttachmentSampleLocationsEXT-attachmentIndex-01531",
   4407           "text": " <code>attachmentIndex</code> <strong class=\"purple\">must</strong> be less than the <code>attachmentCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with"
   4408         },
   4409         {
   4410           "vuid": "VUID-VkAttachmentSampleLocationsEXT-sampleLocationsInfo-parameter",
   4411           "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
   4412         }
   4413       ]
   4414     },
   4415     "VkSubpassSampleLocationsEXT": {
   4416       "(VK_EXT_sample_locations)": [
   4417         {
   4418           "vuid": "VUID-VkSubpassSampleLocationsEXT-subpassIndex-01532",
   4419           "text": " <code>subpassIndex</code> <strong class=\"purple\">must</strong> be less than the <code>subpassCount</code> specified in <a href=\"#VkRenderPassCreateInfo\">VkRenderPassCreateInfo</a> the render pass specified by <a href=\"#VkRenderPassBeginInfo\">VkRenderPassBeginInfo</a>::<code>renderPass</code> was created with"
   4420         },
   4421         {
   4422           "vuid": "VUID-VkSubpassSampleLocationsEXT-sampleLocationsInfo-parameter",
   4423           "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
   4424         }
   4425       ]
   4426     },
   4427     "VkSubpassBeginInfoKHR": {
   4428       "(VK_KHR_create_renderpass2)": [
   4429         {
   4430           "vuid": "VUID-VkSubpassBeginInfoKHR-sType-sType",
   4431           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR</code>"
   4432         },
   4433         {
   4434           "vuid": "VUID-VkSubpassBeginInfoKHR-pNext-pNext",
   4435           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4436         },
   4437         {
   4438           "vuid": "VUID-VkSubpassBeginInfoKHR-contents-parameter",
   4439           "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
   4440         }
   4441       ]
   4442     },
   4443     "VkDeviceGroupRenderPassBeginInfo": {
   4444       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   4445         {
   4446           "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00905",
   4447           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask value"
   4448         },
   4449         {
   4450           "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00906",
   4451           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
   4452         },
   4453         {
   4454           "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceMask-00907",
   4455           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a subset of the command buffer&#8217;s initial device mask"
   4456         },
   4457         {
   4458           "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-deviceRenderAreaCount-00908",
   4459           "text": " <code>deviceRenderAreaCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device."
   4460         },
   4461         {
   4462           "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-sType-sType",
   4463           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO</code>"
   4464         },
   4465         {
   4466           "vuid": "VUID-VkDeviceGroupRenderPassBeginInfo-pDeviceRenderAreas-parameter",
   4467           "text": " If <code>deviceRenderAreaCount</code> is not <code>0</code>, <code>pDeviceRenderAreas</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceRenderAreaCount</code> <code>VkRect2D</code> structures"
   4468         }
   4469       ]
   4470     },
   4471     "vkGetRenderAreaGranularity": {
   4472       "core": [
   4473         {
   4474           "vuid": "VUID-vkGetRenderAreaGranularity-device-parameter",
   4475           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4476         },
   4477         {
   4478           "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parameter",
   4479           "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
   4480         },
   4481         {
   4482           "vuid": "VUID-vkGetRenderAreaGranularity-pGranularity-parameter",
   4483           "text": " <code>pGranularity</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExtent2D</code> structure"
   4484         },
   4485         {
   4486           "vuid": "VUID-vkGetRenderAreaGranularity-renderPass-parent",
   4487           "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   4488         }
   4489       ]
   4490     },
   4491     "vkCmdNextSubpass": {
   4492       "core": [
   4493         {
   4494           "vuid": "VUID-vkCmdNextSubpass-None-00909",
   4495           "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
   4496         },
   4497         {
   4498           "vuid": "VUID-vkCmdNextSubpass-commandBuffer-parameter",
   4499           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   4500         },
   4501         {
   4502           "vuid": "VUID-vkCmdNextSubpass-contents-parameter",
   4503           "text": " <code>contents</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSubpassContents\">VkSubpassContents</a> value"
   4504         },
   4505         {
   4506           "vuid": "VUID-vkCmdNextSubpass-commandBuffer-recording",
   4507           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   4508         },
   4509         {
   4510           "vuid": "VUID-vkCmdNextSubpass-commandBuffer-cmdpool",
   4511           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   4512         },
   4513         {
   4514           "vuid": "VUID-vkCmdNextSubpass-renderpass",
   4515           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   4516         },
   4517         {
   4518           "vuid": "VUID-vkCmdNextSubpass-bufferlevel",
   4519           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
   4520         }
   4521       ],
   4522       "(VK_EXT_transform_feedback)": [
   4523         {
   4524           "vuid": "VUID-vkCmdNextSubpass-None-02349",
   4525           "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
   4526         }
   4527       ]
   4528     },
   4529     "vkCmdNextSubpass2KHR": {
   4530       "(VK_KHR_create_renderpass2)": [
   4531         {
   4532           "vuid": "VUID-vkCmdNextSubpass2KHR-None-03102",
   4533           "text": " The current subpass index <strong class=\"purple\">must</strong> be less than the number of subpasses in the render pass minus one"
   4534         },
   4535         {
   4536           "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-parameter",
   4537           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   4538         },
   4539         {
   4540           "vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassBeginInfo-parameter",
   4541           "text": " <code>pSubpassBeginInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassBeginInfoKHR</code> structure"
   4542         },
   4543         {
   4544           "vuid": "VUID-vkCmdNextSubpass2KHR-pSubpassEndInfo-parameter",
   4545           "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassEndInfoKHR</code> structure"
   4546         },
   4547         {
   4548           "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-recording",
   4549           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   4550         },
   4551         {
   4552           "vuid": "VUID-vkCmdNextSubpass2KHR-commandBuffer-cmdpool",
   4553           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   4554         },
   4555         {
   4556           "vuid": "VUID-vkCmdNextSubpass2KHR-renderpass",
   4557           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   4558         },
   4559         {
   4560           "vuid": "VUID-vkCmdNextSubpass2KHR-bufferlevel",
   4561           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
   4562         }
   4563       ],
   4564       "(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
   4565         {
   4566           "vuid": "VUID-vkCmdNextSubpass2KHR-None-02350",
   4567           "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
   4568         }
   4569       ]
   4570     },
   4571     "vkCmdEndRenderPass": {
   4572       "core": [
   4573         {
   4574           "vuid": "VUID-vkCmdEndRenderPass-None-00910",
   4575           "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
   4576         },
   4577         {
   4578           "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-parameter",
   4579           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   4580         },
   4581         {
   4582           "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-recording",
   4583           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   4584         },
   4585         {
   4586           "vuid": "VUID-vkCmdEndRenderPass-commandBuffer-cmdpool",
   4587           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   4588         },
   4589         {
   4590           "vuid": "VUID-vkCmdEndRenderPass-renderpass",
   4591           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   4592         },
   4593         {
   4594           "vuid": "VUID-vkCmdEndRenderPass-bufferlevel",
   4595           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
   4596         }
   4597       ],
   4598       "(VK_EXT_transform_feedback)": [
   4599         {
   4600           "vuid": "VUID-vkCmdEndRenderPass-None-02351",
   4601           "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
   4602         }
   4603       ]
   4604     },
   4605     "vkCmdEndRenderPass2KHR": {
   4606       "(VK_KHR_create_renderpass2)": [
   4607         {
   4608           "vuid": "VUID-vkCmdEndRenderPass2KHR-None-03103",
   4609           "text": " The current subpass index <strong class=\"purple\">must</strong> be equal to the number of subpasses in the render pass minus one"
   4610         },
   4611         {
   4612           "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-parameter",
   4613           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   4614         },
   4615         {
   4616           "vuid": "VUID-vkCmdEndRenderPass2KHR-pSubpassEndInfo-parameter",
   4617           "text": " <code>pSubpassEndInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSubpassEndInfoKHR</code> structure"
   4618         },
   4619         {
   4620           "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-recording",
   4621           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   4622         },
   4623         {
   4624           "vuid": "VUID-vkCmdEndRenderPass2KHR-commandBuffer-cmdpool",
   4625           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   4626         },
   4627         {
   4628           "vuid": "VUID-vkCmdEndRenderPass2KHR-renderpass",
   4629           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   4630         },
   4631         {
   4632           "vuid": "VUID-vkCmdEndRenderPass2KHR-bufferlevel",
   4633           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a primary <code>VkCommandBuffer</code>"
   4634         }
   4635       ],
   4636       "(VK_KHR_create_renderpass2)+(VK_EXT_transform_feedback)": [
   4637         {
   4638           "vuid": "VUID-vkCmdEndRenderPass2KHR-None-02352",
   4639           "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
   4640         }
   4641       ]
   4642     },
   4643     "VkSubpassEndInfoKHR": {
   4644       "(VK_KHR_create_renderpass2)": [
   4645         {
   4646           "vuid": "VUID-VkSubpassEndInfoKHR-sType-sType",
   4647           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR</code>"
   4648         },
   4649         {
   4650           "vuid": "VUID-VkSubpassEndInfoKHR-pNext-pNext",
   4651           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4652         }
   4653       ]
   4654     },
   4655     "vkCreateShaderModule": {
   4656       "core": [
   4657         {
   4658           "vuid": "VUID-vkCreateShaderModule-device-parameter",
   4659           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4660         },
   4661         {
   4662           "vuid": "VUID-vkCreateShaderModule-pCreateInfo-parameter",
   4663           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkShaderModuleCreateInfo</code> structure"
   4664         },
   4665         {
   4666           "vuid": "VUID-vkCreateShaderModule-pAllocator-parameter",
   4667           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   4668         },
   4669         {
   4670           "vuid": "VUID-vkCreateShaderModule-pShaderModule-parameter",
   4671           "text": " <code>pShaderModule</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkShaderModule</code> handle"
   4672         }
   4673       ]
   4674     },
   4675     "VkShaderModuleCreateInfo": {
   4676       "core": [
   4677         {
   4678           "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01085",
   4679           "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be greater than 0"
   4680         },
   4681         {
   4682           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01089",
   4683           "text": " <code>pCode</code> <strong class=\"purple\">must</strong> declare the <code>Shader</code> capability for SPIR-V code"
   4684         },
   4685         {
   4686           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01090",
   4687           "text": " <code>pCode</code> <strong class=\"purple\">must</strong> not declare any capability that is not supported by the API, as described by the <a href=\"#spirvenv-module-validation\">Capabilities</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix"
   4688         },
   4689         {
   4690           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01091",
   4691           "text": " If <code>pCode</code> declares any of the capabilities listed as <strong class=\"purple\">optional</strong> in the <a href=\"#spirvenv-capabilities-table\">SPIR-V Environment</a> appendix, the corresponding feature(s) <strong class=\"purple\">must</strong> be enabled."
   4692         },
   4693         {
   4694           "vuid": "VUID-VkShaderModuleCreateInfo-sType-sType",
   4695           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO</code>"
   4696         },
   4697         {
   4698           "vuid": "VUID-VkShaderModuleCreateInfo-pNext-pNext",
   4699           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkShaderModuleValidationCacheCreateInfoEXT\">VkShaderModuleValidationCacheCreateInfoEXT</a>"
   4700         },
   4701         {
   4702           "vuid": "VUID-VkShaderModuleCreateInfo-flags-zerobitmask",
   4703           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   4704         },
   4705         {
   4706           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-parameter",
   4707           "text": " <code>pCode</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\textrm{codeSize} \\over 4\\) <code>uint32_t</code> values"
   4708         }
   4709       ],
   4710       "!(VK_NV_glsl_shader)": [
   4711         {
   4712           "vuid": "VUID-VkShaderModuleCreateInfo-codeSize-01086",
   4713           "text": " <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
   4714         },
   4715         {
   4716           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01087",
   4717           "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a>"
   4718         },
   4719         {
   4720           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01088",
   4721           "text": " <code>pCode</code> <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix"
   4722         }
   4723       ],
   4724       "(VK_NV_glsl_shader)": [
   4725         {
   4726           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01376",
   4727           "text": " If <code>pCode</code> points to SPIR-V code, <code>codeSize</code> <strong class=\"purple\">must</strong> be a multiple of 4"
   4728         },
   4729         {
   4730           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01377",
   4731           "text": " <code>pCode</code> <strong class=\"purple\">must</strong> point to either valid SPIR-V code, formatted and packed as described by the <a href=\"#spirv-spec\">Khronos SPIR-V Specification</a> or valid GLSL code which <strong class=\"purple\">must</strong> be written to the <code>GL_KHR_vulkan_glsl</code> extension specification"
   4732         },
   4733         {
   4734           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01378",
   4735           "text": " If <code>pCode</code> points to SPIR-V code, that code <strong class=\"purple\">must</strong> adhere to the validation rules described by the <a href=\"#spirvenv-module-validation\">Validation Rules within a Module</a> section of the <a href=\"#spirvenv-capabilities\">SPIR-V Environment</a> appendix"
   4736         },
   4737         {
   4738           "vuid": "VUID-VkShaderModuleCreateInfo-pCode-01379",
   4739           "text": " If <code>pCode</code> points to GLSL code, it <strong class=\"purple\">must</strong> be valid GLSL code written to the <code>GL_KHR_vulkan_glsl</code> GLSL extension specification"
   4740         }
   4741       ]
   4742     },
   4743     "VkShaderModuleValidationCacheCreateInfoEXT": {
   4744       "(VK_EXT_validation_cache)": [
   4745         {
   4746           "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-sType-sType",
   4747           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
   4748         },
   4749         {
   4750           "vuid": "VUID-VkShaderModuleValidationCacheCreateInfoEXT-validationCache-parameter",
   4751           "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
   4752         }
   4753       ]
   4754     },
   4755     "vkDestroyShaderModule": {
   4756       "core": [
   4757         {
   4758           "vuid": "VUID-vkDestroyShaderModule-shaderModule-01092",
   4759           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   4760         },
   4761         {
   4762           "vuid": "VUID-vkDestroyShaderModule-shaderModule-01093",
   4763           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>shaderModule</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4764         },
   4765         {
   4766           "vuid": "VUID-vkDestroyShaderModule-device-parameter",
   4767           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4768         },
   4769         {
   4770           "vuid": "VUID-vkDestroyShaderModule-shaderModule-parameter",
   4771           "text": " If <code>shaderModule</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>shaderModule</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle"
   4772         },
   4773         {
   4774           "vuid": "VUID-vkDestroyShaderModule-pAllocator-parameter",
   4775           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   4776         },
   4777         {
   4778           "vuid": "VUID-vkDestroyShaderModule-shaderModule-parent",
   4779           "text": " If <code>shaderModule</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   4780         }
   4781       ]
   4782     },
   4783     "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV": {
   4784       "(VK_NV_cooperative_matrix)": [
   4785         {
   4786           "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-physicalDevice-parameter",
   4787           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   4788         },
   4789         {
   4790           "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pPropertyCount-parameter",
   4791           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   4792         },
   4793         {
   4794           "vuid": "VUID-vkGetPhysicalDeviceCooperativeMatrixPropertiesNV-pProperties-parameter",
   4795           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkCooperativeMatrixPropertiesNV</code> structures"
   4796         }
   4797       ]
   4798     },
   4799     "VkCooperativeMatrixPropertiesNV": {
   4800       "(VK_NV_cooperative_matrix)": [
   4801         {
   4802           "vuid": "VUID-VkCooperativeMatrixPropertiesNV-sType-sType",
   4803           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
   4804         },
   4805         {
   4806           "vuid": "VUID-VkCooperativeMatrixPropertiesNV-pNext-pNext",
   4807           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4808         },
   4809         {
   4810           "vuid": "VUID-VkCooperativeMatrixPropertiesNV-AType-parameter",
   4811           "text": " <code>AType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
   4812         },
   4813         {
   4814           "vuid": "VUID-VkCooperativeMatrixPropertiesNV-BType-parameter",
   4815           "text": " <code>BType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
   4816         },
   4817         {
   4818           "vuid": "VUID-VkCooperativeMatrixPropertiesNV-CType-parameter",
   4819           "text": " <code>CType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
   4820         },
   4821         {
   4822           "vuid": "VUID-VkCooperativeMatrixPropertiesNV-DType-parameter",
   4823           "text": " <code>DType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentTypeNV\">VkComponentTypeNV</a> value"
   4824         },
   4825         {
   4826           "vuid": "VUID-VkCooperativeMatrixPropertiesNV-scope-parameter",
   4827           "text": " <code>scope</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkScopeNV\">VkScopeNV</a> value"
   4828         }
   4829       ]
   4830     },
   4831     "vkCreateValidationCacheEXT": {
   4832       "(VK_EXT_validation_cache)": [
   4833         {
   4834           "vuid": "VUID-vkCreateValidationCacheEXT-device-parameter",
   4835           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4836         },
   4837         {
   4838           "vuid": "VUID-vkCreateValidationCacheEXT-pCreateInfo-parameter",
   4839           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkValidationCacheCreateInfoEXT</code> structure"
   4840         },
   4841         {
   4842           "vuid": "VUID-vkCreateValidationCacheEXT-pAllocator-parameter",
   4843           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   4844         },
   4845         {
   4846           "vuid": "VUID-vkCreateValidationCacheEXT-pValidationCache-parameter",
   4847           "text": " <code>pValidationCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkValidationCacheEXT</code> handle"
   4848         }
   4849       ]
   4850     },
   4851     "VkValidationCacheCreateInfoEXT": {
   4852       "(VK_EXT_validation_cache)": [
   4853         {
   4854           "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01534",
   4855           "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetValidationCacheDataEXT</code> when <code>pInitialData</code> was originally retrieved"
   4856         },
   4857         {
   4858           "vuid": "VUID-VkValidationCacheCreateInfoEXT-initialDataSize-01535",
   4859           "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetValidationCacheDataEXT</code>"
   4860         },
   4861         {
   4862           "vuid": "VUID-VkValidationCacheCreateInfoEXT-sType-sType",
   4863           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT</code>"
   4864         },
   4865         {
   4866           "vuid": "VUID-VkValidationCacheCreateInfoEXT-pNext-pNext",
   4867           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4868         },
   4869         {
   4870           "vuid": "VUID-VkValidationCacheCreateInfoEXT-flags-zerobitmask",
   4871           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   4872         },
   4873         {
   4874           "vuid": "VUID-VkValidationCacheCreateInfoEXT-pInitialData-parameter",
   4875           "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes"
   4876         }
   4877       ]
   4878     },
   4879     "vkMergeValidationCachesEXT": {
   4880       "(VK_EXT_validation_cache)": [
   4881         {
   4882           "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-01536",
   4883           "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
   4884         },
   4885         {
   4886           "vuid": "VUID-vkMergeValidationCachesEXT-device-parameter",
   4887           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4888         },
   4889         {
   4890           "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parameter",
   4891           "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
   4892         },
   4893         {
   4894           "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parameter",
   4895           "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkValidationCacheEXT</code> handles"
   4896         },
   4897         {
   4898           "vuid": "VUID-vkMergeValidationCachesEXT-srcCacheCount-arraylength",
   4899           "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   4900         },
   4901         {
   4902           "vuid": "VUID-vkMergeValidationCachesEXT-dstCache-parent",
   4903           "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   4904         },
   4905         {
   4906           "vuid": "VUID-vkMergeValidationCachesEXT-pSrcCaches-parent",
   4907           "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   4908         }
   4909       ]
   4910     },
   4911     "vkGetValidationCacheDataEXT": {
   4912       "(VK_EXT_validation_cache)": [
   4913         {
   4914           "vuid": "VUID-vkGetValidationCacheDataEXT-device-parameter",
   4915           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4916         },
   4917         {
   4918           "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parameter",
   4919           "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
   4920         },
   4921         {
   4922           "vuid": "VUID-vkGetValidationCacheDataEXT-pDataSize-parameter",
   4923           "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
   4924         },
   4925         {
   4926           "vuid": "VUID-vkGetValidationCacheDataEXT-pData-parameter",
   4927           "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes"
   4928         },
   4929         {
   4930           "vuid": "VUID-vkGetValidationCacheDataEXT-validationCache-parent",
   4931           "text": " <code>validationCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   4932         }
   4933       ]
   4934     },
   4935     "vkDestroyValidationCacheEXT": {
   4936       "(VK_EXT_validation_cache)": [
   4937         {
   4938           "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01537",
   4939           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   4940         },
   4941         {
   4942           "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-01538",
   4943           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>validationCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   4944         },
   4945         {
   4946           "vuid": "VUID-vkDestroyValidationCacheEXT-device-parameter",
   4947           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4948         },
   4949         {
   4950           "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parameter",
   4951           "text": " If <code>validationCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>validationCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkValidationCacheEXT</code> handle"
   4952         },
   4953         {
   4954           "vuid": "VUID-vkDestroyValidationCacheEXT-pAllocator-parameter",
   4955           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   4956         },
   4957         {
   4958           "vuid": "VUID-vkDestroyValidationCacheEXT-validationCache-parent",
   4959           "text": " If <code>validationCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   4960         }
   4961       ]
   4962     },
   4963     "vkCreateComputePipelines": {
   4964       "core": [
   4965         {
   4966           "vuid": "VUID-vkCreateComputePipelines-flags-00695",
   4967           "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
   4968         },
   4969         {
   4970           "vuid": "VUID-vkCreateComputePipelines-flags-00696",
   4971           "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
   4972         },
   4973         {
   4974           "vuid": "VUID-vkCreateComputePipelines-device-parameter",
   4975           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   4976         },
   4977         {
   4978           "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parameter",
   4979           "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
   4980         },
   4981         {
   4982           "vuid": "VUID-vkCreateComputePipelines-pCreateInfos-parameter",
   4983           "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkComputePipelineCreateInfo</code> structures"
   4984         },
   4985         {
   4986           "vuid": "VUID-vkCreateComputePipelines-pAllocator-parameter",
   4987           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   4988         },
   4989         {
   4990           "vuid": "VUID-vkCreateComputePipelines-pPipelines-parameter",
   4991           "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
   4992         },
   4993         {
   4994           "vuid": "VUID-vkCreateComputePipelines-createInfoCount-arraylength",
   4995           "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   4996         },
   4997         {
   4998           "vuid": "VUID-vkCreateComputePipelines-pipelineCache-parent",
   4999           "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5000         }
   5001       ]
   5002     },
   5003     "VkComputePipelineCreateInfo": {
   5004       "core": [
   5005         {
   5006           "vuid": "VUID-VkComputePipelineCreateInfo-flags-00697",
   5007           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a compute <code>VkPipeline</code>"
   5008         },
   5009         {
   5010           "vuid": "VUID-VkComputePipelineCreateInfo-flags-00698",
   5011           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
   5012         },
   5013         {
   5014           "vuid": "VUID-VkComputePipelineCreateInfo-flags-00699",
   5015           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   5016         },
   5017         {
   5018           "vuid": "VUID-VkComputePipelineCreateInfo-flags-00700",
   5019           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1"
   5020         },
   5021         {
   5022           "vuid": "VUID-VkComputePipelineCreateInfo-stage-00701",
   5023           "text": " The <code>stage</code> member of <code>stage</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
   5024         },
   5025         {
   5026           "vuid": "VUID-VkComputePipelineCreateInfo-stage-00702",
   5027           "text": " The shader code for the entry point identified by <code>stage</code> and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
   5028         },
   5029         {
   5030           "vuid": "VUID-VkComputePipelineCreateInfo-layout-00703",
   5031           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with the layout of the compute shader specified in <code>stage</code>"
   5032         },
   5033         {
   5034           "vuid": "VUID-VkComputePipelineCreateInfo-layout-01687",
   5035           "text": " The number of resources in <code>layout</code> accessible to the compute shader stage <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>"
   5036         },
   5037         {
   5038           "vuid": "VUID-VkComputePipelineCreateInfo-sType-sType",
   5039           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO</code>"
   5040         },
   5041         {
   5042           "vuid": "VUID-VkComputePipelineCreateInfo-pNext-pNext",
   5043           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   5044         },
   5045         {
   5046           "vuid": "VUID-VkComputePipelineCreateInfo-flags-parameter",
   5047           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
   5048         },
   5049         {
   5050           "vuid": "VUID-VkComputePipelineCreateInfo-stage-parameter",
   5051           "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineShaderStageCreateInfo</code> structure"
   5052         },
   5053         {
   5054           "vuid": "VUID-VkComputePipelineCreateInfo-layout-parameter",
   5055           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   5056         },
   5057         {
   5058           "vuid": "VUID-VkComputePipelineCreateInfo-commonparent",
   5059           "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   5060         }
   5061       ]
   5062     },
   5063     "VkPipelineShaderStageCreateInfo": {
   5064       "core": [
   5065         {
   5066           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00704",
   5067           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>"
   5068         },
   5069         {
   5070           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00705",
   5071           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>"
   5072         },
   5073         {
   5074           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00706",
   5075           "text": " <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_ALL_GRAPHICS</code>, or <code>VK_SHADER_STAGE_ALL</code>"
   5076         },
   5077         {
   5078           "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-00707",
   5079           "text": " <code>pName</code> <strong class=\"purple\">must</strong> be the name of an <code>OpEntryPoint</code> in <code>module</code> with an execution model that matches <code>stage</code>"
   5080         },
   5081         {
   5082           "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxClipDistances-00708",
   5083           "text": " If the identified entry point includes any variable in its interface that is declared with the <code>ClipDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxClipDistances</code>"
   5084         },
   5085         {
   5086           "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCullDistances-00709",
   5087           "text": " If the identified entry point includes any variable in its interface that is declared with the <code>CullDistance</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxCullDistances</code>"
   5088         },
   5089         {
   5090           "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxCombinedClipAndCullDistances-00710",
   5091           "text": " If the identified entry point includes any variables in its interface that are declared with the <code>ClipDistance</code> or <code>CullDistance</code> <code>BuiltIn</code> decoration, those variables <strong class=\"purple\">must</strong> not have array sizes which sum to more than <code>VkPhysicalDeviceLimits</code>::<code>maxCombinedClipAndCullDistances</code>"
   5092         },
   5093         {
   5094           "vuid": "VUID-VkPipelineShaderStageCreateInfo-maxSampleMaskWords-00711",
   5095           "text": " If the identified entry point includes any variable in its interface that is declared with the <code>SampleMask</code> <code>BuiltIn</code> decoration, that variable <strong class=\"purple\">must</strong> not have an array size greater than <code>VkPhysicalDeviceLimits</code>::<code>maxSampleMaskWords</code>"
   5096         },
   5097         {
   5098           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00712",
   5099           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any input variable in its interface that is decorated with <code>CullDistance</code>"
   5100         },
   5101         {
   5102           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00713",
   5103           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code> or <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, and the identified entry point has an <code>OpExecutionMode</code> instruction that specifies a patch size with <code>OutputVertices</code>, the patch size <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>"
   5104         },
   5105         {
   5106           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00714",
   5107           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryOutputVertices</code>"
   5108         },
   5109         {
   5110           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00715",
   5111           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies an invocation count that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxGeometryShaderInvocations</code>"
   5112         },
   5113         {
   5114           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02596",
   5115           "text": " If <code>stage</code> is a vertex processing stage, and the identified entry point writes to <code>Layer</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>Layer</code> for all vertices of a given primitive"
   5116         },
   5117         {
   5118           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02597",
   5119           "text": " If <code>stage</code> is a vertex processing stage, and the identified entry point writes to <code>ViewportIndex</code> for any primitive, it <strong class=\"purple\">must</strong> write the same value to <code>ViewportIndex</code> for all vertices of a given primitive"
   5120         },
   5121         {
   5122           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00718",
   5123           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, the identified entry point <strong class=\"purple\">must</strong> not include any output variables in its interface decorated with <code>CullDistance</code>"
   5124         },
   5125         {
   5126           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-00719",
   5127           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragDepth</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragDepth</code> in all execution paths"
   5128         },
   5129         {
   5130           "vuid": "VUID-VkPipelineShaderStageCreateInfo-sType-sType",
   5131           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO</code>"
   5132         },
   5133         {
   5134           "vuid": "VUID-VkPipelineShaderStageCreateInfo-pNext-pNext",
   5135           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   5136         },
   5137         {
   5138           "vuid": "VUID-VkPipelineShaderStageCreateInfo-flags-zerobitmask",
   5139           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   5140         },
   5141         {
   5142           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-parameter",
   5143           "text": " <code>stage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
   5144         },
   5145         {
   5146           "vuid": "VUID-VkPipelineShaderStageCreateInfo-module-parameter",
   5147           "text": " <code>module</code> <strong class=\"purple\">must</strong> be a valid <code>VkShaderModule</code> handle"
   5148         },
   5149         {
   5150           "vuid": "VUID-VkPipelineShaderStageCreateInfo-pName-parameter",
   5151           "text": " <code>pName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   5152         },
   5153         {
   5154           "vuid": "VUID-VkPipelineShaderStageCreateInfo-pSpecializationInfo-parameter",
   5155           "text": " If <code>pSpecializationInfo</code> is not <code>NULL</code>, <code>pSpecializationInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSpecializationInfo</code> structure"
   5156         }
   5157       ],
   5158       "(VK_NV_mesh_shader)": [
   5159         {
   5160           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02091",
   5161           "text": " If the <a href=\"#features-meshShader\">mesh shader</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_MESH_BIT_NV</code>"
   5162         },
   5163         {
   5164           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02092",
   5165           "text": " If the <a href=\"#features-taskShader\">task shader</a> feature is not enabled, <code>stage</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_TASK_BIT_NV</code>"
   5166         },
   5167         {
   5168           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02093",
   5169           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_NV</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output vertex count, <code>OutputVertices</code>, that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxMeshOutputVertices</code>."
   5170         },
   5171         {
   5172           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-02094",
   5173           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_MESH_BIT_NV</code>, the identified entry point <strong class=\"purple\">must</strong> have an <code>OpExecutionMode</code> instruction that specifies a maximum output primitive count, <code>OutputPrimitivesNV</code>, that is greater than <code>0</code> and less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxMeshOutputPrimitives</code>."
   5174         }
   5175       ],
   5176       "(VK_EXT_shader_stencil_export)": [
   5177         {
   5178           "vuid": "VUID-VkPipelineShaderStageCreateInfo-stage-01511",
   5179           "text": " If <code>stage</code> is <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>, and the identified entry point writes to <code>FragStencilRefEXT</code> in any execution path, it <strong class=\"purple\">must</strong> write to <code>FragStencilRefEXT</code> in all execution paths"
   5180         }
   5181       ]
   5182     },
   5183     "vkCreateGraphicsPipelines": {
   5184       "core": [
   5185         {
   5186           "vuid": "VUID-vkCreateGraphicsPipelines-flags-00720",
   5187           "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
   5188         },
   5189         {
   5190           "vuid": "VUID-vkCreateGraphicsPipelines-flags-00721",
   5191           "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
   5192         },
   5193         {
   5194           "vuid": "VUID-vkCreateGraphicsPipelines-device-parameter",
   5195           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   5196         },
   5197         {
   5198           "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parameter",
   5199           "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
   5200         },
   5201         {
   5202           "vuid": "VUID-vkCreateGraphicsPipelines-pCreateInfos-parameter",
   5203           "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkGraphicsPipelineCreateInfo</code> structures"
   5204         },
   5205         {
   5206           "vuid": "VUID-vkCreateGraphicsPipelines-pAllocator-parameter",
   5207           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   5208         },
   5209         {
   5210           "vuid": "VUID-vkCreateGraphicsPipelines-pPipelines-parameter",
   5211           "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
   5212         },
   5213         {
   5214           "vuid": "VUID-vkCreateGraphicsPipelines-createInfoCount-arraylength",
   5215           "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   5216         },
   5217         {
   5218           "vuid": "VUID-vkCreateGraphicsPipelines-pipelineCache-parent",
   5219           "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5220         }
   5221       ]
   5222     },
   5223     "VkGraphicsPipelineCreateInfo": {
   5224       "core": [
   5225         {
   5226           "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00722",
   5227           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a graphics <code>VkPipeline</code>"
   5228         },
   5229         {
   5230           "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00723",
   5231           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
   5232         },
   5233         {
   5234           "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00724",
   5235           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not -1, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   5236         },
   5237         {
   5238           "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00725",
   5239           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be -1"
   5240         },
   5241         {
   5242           "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00726",
   5243           "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> be unique"
   5244         },
   5245         {
   5246           "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00728",
   5247           "text": " The <code>stage</code> member of each element of <code>pStages</code> <strong class=\"purple\">must</strong> not be <code>VK_SHADER_STAGE_COMPUTE_BIT</code>"
   5248         },
   5249         {
   5250           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00729",
   5251           "text": " If <code>pStages</code> includes a tessellation control shader stage, it <strong class=\"purple\">must</strong> include a tessellation evaluation shader stage"
   5252         },
   5253         {
   5254           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00730",
   5255           "text": " If <code>pStages</code> includes a tessellation evaluation shader stage, it <strong class=\"purple\">must</strong> include a tessellation control shader stage"
   5256         },
   5257         {
   5258           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00731",
   5259           "text": " If <code>pStages</code> includes a tessellation control shader stage and a tessellation evaluation shader stage, <code>pTessellationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineTessellationStateCreateInfo</code> structure"
   5260         },
   5261         {
   5262           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00732",
   5263           "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline"
   5264         },
   5265         {
   5266           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00733",
   5267           "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both stages contain an <code>OpExecutionMode</code> instruction that specifies the type of subdivision in the pipeline, they <strong class=\"purple\">must</strong> both specify the same subdivision mode"
   5268         },
   5269         {
   5270           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00734",
   5271           "text": " If <code>pStages</code> includes tessellation shader stages, the shader code of at least one stage <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies the output patch size in the pipeline"
   5272         },
   5273         {
   5274           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00735",
   5275           "text": " If <code>pStages</code> includes tessellation shader stages, and the shader code of both contain an <code>OpExecutionMode</code> instruction that specifies the out patch size in the pipeline, they <strong class=\"purple\">must</strong> both specify the same patch size"
   5276         },
   5277         {
   5278           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00736",
   5279           "text": " If <code>pStages</code> includes tessellation shader stages, the <code>topology</code> member of <code>pInputAssembly</code> <strong class=\"purple\">must</strong> be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>"
   5280         },
   5281         {
   5282           "vuid": "VUID-VkGraphicsPipelineCreateInfo-topology-00737",
   5283           "text": " If the <code>topology</code> member of <code>pInputAssembly</code> is <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>pStages</code> <strong class=\"purple\">must</strong> include tessellation shader stages"
   5284         },
   5285         {
   5286           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00738",
   5287           "text": " If <code>pStages</code> includes a geometry shader stage, and does not include any tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology specified in <code>pInputAssembly</code>"
   5288         },
   5289         {
   5290           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00739",
   5291           "text": " If <code>pStages</code> includes a geometry shader stage, and also includes tessellation shader stages, its shader code <strong class=\"purple\">must</strong> contain an <code>OpExecutionMode</code> instruction that specifies an input primitive type that is <a href=\"#shaders-geometry-execution\">compatible</a> with the primitive topology that is output by the tessellation stages"
   5292         },
   5293         {
   5294           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00740",
   5295           "text": " If <code>pStages</code> includes a fragment shader stage and a geometry shader stage, and the fragment shader code reads from an input variable that is decorated with <code>PrimitiveID</code>, then the geometry shader code <strong class=\"purple\">must</strong> write to a matching output variable, decorated with <code>PrimitiveID</code>, in all execution paths"
   5296         },
   5297         {
   5298           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00741",
   5299           "text": " If <code>pStages</code> includes a fragment shader stage, its shader code <strong class=\"purple\">must</strong> not read from any input attachment that is defined as <code>VK_ATTACHMENT_UNUSED</code> in <code>subpass</code>"
   5300         },
   5301         {
   5302           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-00742",
   5303           "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
   5304         },
   5305         {
   5306           "vuid": "VUID-VkGraphicsPipelineCreateInfo-blendEnable-02023",
   5307           "text": " If rasterization is not disabled and the subpass uses color attachments, then for each color attachment in the subpass the <code>blendEnable</code> member of the corresponding element of the <code>pAttachment</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code> if the attached image&#8217;s <a href=\"#resources-image-format-features\">format features</a> does not contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT</code>."
   5308         },
   5309         {
   5310           "vuid": "VUID-VkGraphicsPipelineCreateInfo-attachmentCount-00746",
   5311           "text": " If rasterization is not disabled and the subpass uses color attachments, the <code>attachmentCount</code> member of <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be equal to the <code>colorAttachmentCount</code> used to create <code>subpass</code>"
   5312         },
   5313         {
   5314           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00747",
   5315           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT</code>, the <code>pViewports</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>viewportCount</code> valid <code>VkViewport</code> structures"
   5316         },
   5317         {
   5318           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00748",
   5319           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SCISSOR</code>, the <code>pScissors</code> member of <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pViewportState</code>::<code>scissorCount</code> <code>VkRect2D</code> structures"
   5320         },
   5321         {
   5322           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00749",
   5323           "text": " If the wide lines feature is not enabled, and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_LINE_WIDTH</code>, the <code>lineWidth</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>1.0</code>"
   5324         },
   5325         {
   5326           "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00750",
   5327           "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pViewportState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineViewportStateCreateInfo</code> structure"
   5328         },
   5329         {
   5330           "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00751",
   5331           "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineMultisampleStateCreateInfo</code> structure"
   5332         },
   5333         {
   5334           "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00752",
   5335           "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses a depth/stencil attachment, <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDepthStencilStateCreateInfo</code> structure"
   5336         },
   5337         {
   5338           "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizerDiscardEnable-00753",
   5339           "text": " If the <code>rasterizerDiscardEnable</code> member of <code>pRasterizationState</code> is <code>VK_FALSE</code>, and <code>subpass</code> uses color attachments, <code>pColorBlendState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineColorBlendStateCreateInfo</code> structure"
   5340         },
   5341         {
   5342           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00754",
   5343           "text": " If the depth bias clamping feature is not enabled, no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code>, and the <code>depthBiasEnable</code> member of <code>pRasterizationState</code> is <code>VK_TRUE</code>, the <code>depthBiasClamp</code> member of <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be <code>0.0</code>"
   5344         },
   5345         {
   5346           "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-00756",
   5347           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>"
   5348         },
   5349         {
   5350           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00757",
   5351           "text": " If neither the <code>VK_AMD_mixed_attachment_samples</code> nor the <code>VK_NV_framebuffer_mixed_samples</code> extensions are enabled, and if <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count for those subpass attachments"
   5352         },
   5353         {
   5354           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00758",
   5355           "text": " If <code>subpass</code> does not use any color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> follow the rules for a <a href=\"#renderpass-noattachments\">zero-attachment subpass</a>"
   5356         },
   5357         {
   5358           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00759",
   5359           "text": " <code>subpass</code> <strong class=\"purple\">must</strong> be a valid subpass within <code>renderPass</code>"
   5360         },
   5361         {
   5362           "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-01688",
   5363           "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageResources</code>"
   5364         },
   5365         {
   5366           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02097",
   5367           "text": " If <code>pStages</code> includes a vertex shader stage, <code>pVertexInputState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineVertexInputStateCreateInfo\">VkPipelineVertexInputStateCreateInfo</a> structure"
   5368         },
   5369         {
   5370           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02098",
   5371           "text": " If <code>pStages</code> includes a vertex shader stage, <code>pInputAssemblyState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <a href=\"#VkPipelineInputAssemblyStateCreateInfo\">VkPipelineInputAssemblyStateCreateInfo</a> structure"
   5372         },
   5373         {
   5374           "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-sType",
   5375           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO</code>"
   5376         },
   5377         {
   5378           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pNext-pNext",
   5379           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineDiscardRectangleStateCreateInfoEXT\">VkPipelineDiscardRectangleStateCreateInfoEXT</a> or <a href=\"#VkPipelineRepresentativeFragmentTestStateCreateInfoNV\">VkPipelineRepresentativeFragmentTestStateCreateInfoNV</a>"
   5380         },
   5381         {
   5382           "vuid": "VUID-VkGraphicsPipelineCreateInfo-sType-unique",
   5383           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   5384         },
   5385         {
   5386           "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-parameter",
   5387           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
   5388         },
   5389         {
   5390           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-parameter",
   5391           "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures"
   5392         },
   5393         {
   5394           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter",
   5395           "text": " <code>pRasterizationState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineRasterizationStateCreateInfo</code> structure"
   5396         },
   5397         {
   5398           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicState-parameter",
   5399           "text": " If <code>pDynamicState</code> is not <code>NULL</code>, <code>pDynamicState</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineDynamicStateCreateInfo</code> structure"
   5400         },
   5401         {
   5402           "vuid": "VUID-VkGraphicsPipelineCreateInfo-layout-parameter",
   5403           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   5404         },
   5405         {
   5406           "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-parameter",
   5407           "text": " <code>renderPass</code> <strong class=\"purple\">must</strong> be a valid <code>VkRenderPass</code> handle"
   5408         },
   5409         {
   5410           "vuid": "VUID-VkGraphicsPipelineCreateInfo-stageCount-arraylength",
   5411           "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   5412         },
   5413         {
   5414           "vuid": "VUID-VkGraphicsPipelineCreateInfo-commonparent",
   5415           "text": " Each of <code>basePipelineHandle</code>, <code>layout</code>, and <code>renderPass</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   5416         }
   5417       ],
   5418       "!(VK_NV_mesh_shader)": [
   5419         {
   5420           "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-00727",
   5421           "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_VERTEX_BIT</code>"
   5422         }
   5423       ],
   5424       "(VK_NV_mesh_shader)": [
   5425         {
   5426           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02095",
   5427           "text": " The geometric shader stages provided in <code>pStages</code> <strong class=\"purple\">must</strong> be either from the mesh shading pipeline (<code>stage</code> is <code>VK_SHADER_STAGE_TASK_BIT_NV</code> or <code>VK_SHADER_STAGE_MESH_BIT_NV</code>) or from the primitive shading pipeline (<code>stage</code> is <code>VK_SHADER_STAGE_VERTEX_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT</code>, <code>VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT</code>, or <code>VK_SHADER_STAGE_GEOMETRY_BIT</code>)."
   5428         },
   5429         {
   5430           "vuid": "VUID-VkGraphicsPipelineCreateInfo-stage-02096",
   5431           "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_STAGE_VERTEX_BIT</code> or <code>VK_SHADER_STAGE_MESH_BIT_NV</code>."
   5432         }
   5433       ],
   5434       "!(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   5435         {
   5436           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00743",
   5437           "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   5438         },
   5439         {
   5440           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-00744",
   5441           "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>"
   5442         }
   5443       ],
   5444       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   5445         {
   5446           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01756",
   5447           "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>depthWriteEnable</code> member of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   5448         },
   5449         {
   5450           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01757",
   5451           "text": " If rasterization is not disabled and <code>subpass</code> uses a depth/stencil attachment in <code>renderPass</code> that has a layout of <code>VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL</code> in the <code>VkAttachmentReference</code> defined by <code>subpass</code>, the <code>failOp</code>, <code>passOp</code> and <code>depthFailOp</code> members of each of the <code>front</code> and <code>back</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be <code>VK_STENCIL_OP_KEEP</code>"
   5452         },
   5453         {
   5454           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-01565",
   5455           "text": " If <code>pStages</code> includes a fragment shader stage and an input attachment was referenced by the <a href=\"#VkRenderPassInputAttachmentAspectCreateInfo\">VkRenderPassInputAttachmentAspectCreateInfo</a> at <code>renderPass</code> create time, its shader code <strong class=\"purple\">must</strong> not read from any aspect that was not specified in the <code>aspectMask</code> of the corresponding <a href=\"#VkInputAttachmentAspectReference\">VkInputAttachmentAspectReference</a> structure."
   5456         }
   5457       ],
   5458       "!(VK_EXT_depth_range_unrestricted)": [
   5459         {
   5460           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-00755",
   5461           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   5462         }
   5463       ],
   5464       "(VK_EXT_depth_range_unrestricted)": [
   5465         {
   5466           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510",
   5467           "text": " If the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is not enabled and no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code>, and the <code>depthBoundsTestEnable</code> member of <code>pDepthStencilState</code> is <code>VK_TRUE</code>, the <code>minDepthBounds</code> and <code>maxDepthBounds</code> members of <code>pDepthStencilState</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   5468         }
   5469       ],
   5470       "(VK_EXT_sample_locations)": [
   5471         {
   5472           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01521",
   5473           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.width</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.width</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>"
   5474         },
   5475         {
   5476           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01522",
   5477           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationGridSize.height</code> <strong class=\"purple\">must</strong> evenly divide <a href=\"#VkMultisamplePropertiesEXT\">VkMultisamplePropertiesEXT</a>::<code>sampleLocationGridSize.height</code> as returned by <a href=\"#vkGetPhysicalDeviceMultisamplePropertiesEXT\">vkGetPhysicalDeviceMultisamplePropertiesEXT</a> with a <code>samples</code> parameter equaling <code>rasterizationSamples</code>"
   5478         },
   5479         {
   5480           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523",
   5481           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code>, and the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, <code>sampleLocationsInfo.sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> equal <code>rasterizationSamples</code>"
   5482         },
   5483         {
   5484           "vuid": "VUID-VkGraphicsPipelineCreateInfo-sampleLocationsEnable-01524",
   5485           "text": " If the <code>sampleLocationsEnable</code> member of a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure chained to the <code>pNext</code> chain of <code>pMultisampleState</code> is <code>VK_TRUE</code>, the fragment shader code <strong class=\"purple\">must</strong> not statically use the extended instruction <code>InterpolateAtSample</code>"
   5486         }
   5487       ],
   5488       "(VK_AMD_mixed_attachment_samples)": [
   5489         {
   5490           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01505",
   5491           "text": " If the <code>VK_AMD_mixed_attachment_samples</code> extension is enabled, and if <code>subpass</code> uses color and/or depth/stencil attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> equal the maximum of the sample counts of those subpass attachments"
   5492         }
   5493       ],
   5494       "(VK_NV_framebuffer_mixed_samples)": [
   5495         {
   5496           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01411",
   5497           "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if <code>subpass</code> has a depth/stencil attachment and depth test, stencil test, or depth bounds test are enabled, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be the same as the sample count of the depth/stencil attachment"
   5498         },
   5499         {
   5500           "vuid": "VUID-VkGraphicsPipelineCreateInfo-subpass-01412",
   5501           "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if <code>subpass</code> has any color attachments, then the <code>rasterizationSamples</code> member of <code>pMultisampleState</code> <strong class=\"purple\">must</strong> be greater than or equal to the sample count for those subpass attachments"
   5502         }
   5503       ],
   5504       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   5505         {
   5506           "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00760",
   5507           "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewTessellationShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include tessellation shaders."
   5508         },
   5509         {
   5510           "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00761",
   5511           "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask and <code>multiviewGeometryShader</code> is not enabled, then <code>pStages</code> <strong class=\"purple\">must</strong> not include a geometry shader."
   5512         },
   5513         {
   5514           "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00762",
   5515           "text": " If the <code>renderPass</code> has multiview enabled and <code>subpass</code> has more than one bit set in the view mask, shaders in the pipeline <strong class=\"purple\">must</strong> not write to the <code>Layer</code> built-in output"
   5516         },
   5517         {
   5518           "vuid": "VUID-VkGraphicsPipelineCreateInfo-renderPass-00763",
   5519           "text": " If the <code>renderPass</code> has multiview enabled, then all shaders <strong class=\"purple\">must</strong> not include variables decorated with the <code>Layer</code> built-in decoration in their interfaces."
   5520         }
   5521       ],
   5522       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   5523         {
   5524           "vuid": "VUID-VkGraphicsPipelineCreateInfo-flags-00764",
   5525           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not contain the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag."
   5526         }
   5527       ],
   5528       "(VK_NV_clip_space_w_scaling)": [
   5529         {
   5530           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715",
   5531           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code>, and the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure, chained to the <code>pNext</code> chain of <code>pViewportState</code>, is <code>VK_TRUE</code>, the <code>pViewportWScalings</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> <strong class=\"purple\">must</strong> be a pointer to an array of <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>::<code>viewportCount</code> valid <a href=\"#VkViewportWScalingNV\">VkViewportWScalingNV</a> structures"
   5532         }
   5533       ],
   5534       "(VK_EXT_transform_feedback)": [
   5535         {
   5536           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02317",
   5537           "text": " The <code>Xfb</code> execution mode <strong class=\"purple\">can</strong> be specified by only one shader stage in <code>pStages</code>"
   5538         },
   5539         {
   5540           "vuid": "VUID-VkGraphicsPipelineCreateInfo-pStages-02318",
   5541           "text": " If any shader stage in <code>pStages</code> specifies <code>Xfb</code> execution mode it <strong class=\"purple\">must</strong> be the last vertex processing stage"
   5542         },
   5543         {
   5544           "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02319",
   5545           "text": " If a <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code> value other than zero is specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with identical <code>Stream</code> values that match the <code>rasterizationStream</code>"
   5546         },
   5547         {
   5548           "vuid": "VUID-VkGraphicsPipelineCreateInfo-rasterizationStream-02320",
   5549           "text": " If <code>VkPipelineRasterizationStateStreamCreateInfoEXT</code>::<code>rasterizationStream</code> is zero, or not specified, all variables in the output interface of the entry point being compiled decorated with <code>Position</code>, <code>PointSize</code>, <code>ClipDistance</code>, or <code>CullDistance</code> <strong class=\"purple\">must</strong> all be decorated with a <code>Stream</code> value of zero, or <strong class=\"purple\">must</strong> not specify the <code>Stream</code> decoration"
   5550         },
   5551         {
   5552           "vuid": "VUID-VkGraphicsPipelineCreateInfo-geometryStreams-02321",
   5553           "text": " If the last vertex processing stage is a geometry shader, and that geometry shader uses the <code>GeometryStreams</code> capability, then <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> feature <strong class=\"purple\">must</strong> be enabled"
   5554         }
   5555       ],
   5556       "(VK_EXT_transform_feedback)+(VK_NV_mesh_shader)": [
   5557         {
   5558           "vuid": "VUID-VkGraphicsPipelineCreateInfo-None-02322",
   5559           "text": " If there are any mesh shader stages in the pipeline there <strong class=\"purple\">must</strong> not be any shader stage in the pipeline with a <code>Xfb</code> execution mode."
   5560         }
   5561       ]
   5562     },
   5563     "VkPipelineDynamicStateCreateInfo": {
   5564       "core": [
   5565         {
   5566           "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-01442",
   5567           "text": " Each element of <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be unique"
   5568         },
   5569         {
   5570           "vuid": "VUID-VkPipelineDynamicStateCreateInfo-sType-sType",
   5571           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO</code>"
   5572         },
   5573         {
   5574           "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pNext-pNext",
   5575           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   5576         },
   5577         {
   5578           "vuid": "VUID-VkPipelineDynamicStateCreateInfo-flags-zerobitmask",
   5579           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   5580         },
   5581         {
   5582           "vuid": "VUID-VkPipelineDynamicStateCreateInfo-pDynamicStates-parameter",
   5583           "text": " If <code>dynamicStateCount</code> is not <code>0</code>, <code>pDynamicStates</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicStateCount</code> valid <a href=\"#VkDynamicState\">VkDynamicState</a> values"
   5584         }
   5585       ]
   5586     },
   5587     "vkDestroyPipeline": {
   5588       "core": [
   5589         {
   5590           "vuid": "VUID-vkDestroyPipeline-pipeline-00765",
   5591           "text": " All submitted commands that refer to <code>pipeline</code> <strong class=\"purple\">must</strong> have completed execution"
   5592         },
   5593         {
   5594           "vuid": "VUID-vkDestroyPipeline-pipeline-00766",
   5595           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   5596         },
   5597         {
   5598           "vuid": "VUID-vkDestroyPipeline-pipeline-00767",
   5599           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipeline</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   5600         },
   5601         {
   5602           "vuid": "VUID-vkDestroyPipeline-device-parameter",
   5603           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   5604         },
   5605         {
   5606           "vuid": "VUID-vkDestroyPipeline-pipeline-parameter",
   5607           "text": " If <code>pipeline</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
   5608         },
   5609         {
   5610           "vuid": "VUID-vkDestroyPipeline-pAllocator-parameter",
   5611           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   5612         },
   5613         {
   5614           "vuid": "VUID-vkDestroyPipeline-pipeline-parent",
   5615           "text": " If <code>pipeline</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5616         }
   5617       ]
   5618     },
   5619     "vkCreatePipelineCache": {
   5620       "core": [
   5621         {
   5622           "vuid": "VUID-vkCreatePipelineCache-device-parameter",
   5623           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   5624         },
   5625         {
   5626           "vuid": "VUID-vkCreatePipelineCache-pCreateInfo-parameter",
   5627           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineCacheCreateInfo</code> structure"
   5628         },
   5629         {
   5630           "vuid": "VUID-vkCreatePipelineCache-pAllocator-parameter",
   5631           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   5632         },
   5633         {
   5634           "vuid": "VUID-vkCreatePipelineCache-pPipelineCache-parameter",
   5635           "text": " <code>pPipelineCache</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineCache</code> handle"
   5636         }
   5637       ]
   5638     },
   5639     "VkPipelineCacheCreateInfo": {
   5640       "core": [
   5641         {
   5642           "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00768",
   5643           "text": " If <code>initialDataSize</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be equal to the size of <code>pInitialData</code>, as returned by <code>vkGetPipelineCacheData</code> when <code>pInitialData</code> was originally retrieved"
   5644         },
   5645         {
   5646           "vuid": "VUID-VkPipelineCacheCreateInfo-initialDataSize-00769",
   5647           "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> have been retrieved from a previous call to <code>vkGetPipelineCacheData</code>"
   5648         },
   5649         {
   5650           "vuid": "VUID-VkPipelineCacheCreateInfo-sType-sType",
   5651           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO</code>"
   5652         },
   5653         {
   5654           "vuid": "VUID-VkPipelineCacheCreateInfo-pNext-pNext",
   5655           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   5656         },
   5657         {
   5658           "vuid": "VUID-VkPipelineCacheCreateInfo-flags-zerobitmask",
   5659           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   5660         },
   5661         {
   5662           "vuid": "VUID-VkPipelineCacheCreateInfo-pInitialData-parameter",
   5663           "text": " If <code>initialDataSize</code> is not <code>0</code>, <code>pInitialData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>initialDataSize</code> bytes"
   5664         }
   5665       ]
   5666     },
   5667     "vkMergePipelineCaches": {
   5668       "core": [
   5669         {
   5670           "vuid": "VUID-vkMergePipelineCaches-dstCache-00770",
   5671           "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> not appear in the list of source caches"
   5672         },
   5673         {
   5674           "vuid": "VUID-vkMergePipelineCaches-device-parameter",
   5675           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   5676         },
   5677         {
   5678           "vuid": "VUID-vkMergePipelineCaches-dstCache-parameter",
   5679           "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
   5680         },
   5681         {
   5682           "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parameter",
   5683           "text": " <code>pSrcCaches</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>srcCacheCount</code> valid <code>VkPipelineCache</code> handles"
   5684         },
   5685         {
   5686           "vuid": "VUID-vkMergePipelineCaches-srcCacheCount-arraylength",
   5687           "text": " <code>srcCacheCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   5688         },
   5689         {
   5690           "vuid": "VUID-vkMergePipelineCaches-dstCache-parent",
   5691           "text": " <code>dstCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5692         },
   5693         {
   5694           "vuid": "VUID-vkMergePipelineCaches-pSrcCaches-parent",
   5695           "text": " Each element of <code>pSrcCaches</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5696         }
   5697       ]
   5698     },
   5699     "vkGetPipelineCacheData": {
   5700       "core": [
   5701         {
   5702           "vuid": "VUID-vkGetPipelineCacheData-device-parameter",
   5703           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   5704         },
   5705         {
   5706           "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parameter",
   5707           "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
   5708         },
   5709         {
   5710           "vuid": "VUID-vkGetPipelineCacheData-pDataSize-parameter",
   5711           "text": " <code>pDataSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
   5712         },
   5713         {
   5714           "vuid": "VUID-vkGetPipelineCacheData-pData-parameter",
   5715           "text": " If the value referenced by <code>pDataSize</code> is not <code>0</code>, and <code>pData</code> is not <code>NULL</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDataSize</code> bytes"
   5716         },
   5717         {
   5718           "vuid": "VUID-vkGetPipelineCacheData-pipelineCache-parent",
   5719           "text": " <code>pipelineCache</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5720         }
   5721       ]
   5722     },
   5723     "vkDestroyPipelineCache": {
   5724       "core": [
   5725         {
   5726           "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00771",
   5727           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   5728         },
   5729         {
   5730           "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-00772",
   5731           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineCache</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   5732         },
   5733         {
   5734           "vuid": "VUID-vkDestroyPipelineCache-device-parameter",
   5735           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   5736         },
   5737         {
   5738           "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parameter",
   5739           "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
   5740         },
   5741         {
   5742           "vuid": "VUID-vkDestroyPipelineCache-pAllocator-parameter",
   5743           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   5744         },
   5745         {
   5746           "vuid": "VUID-vkDestroyPipelineCache-pipelineCache-parent",
   5747           "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5748         }
   5749       ]
   5750     },
   5751     "VkSpecializationInfo": {
   5752       "core": [
   5753         {
   5754           "vuid": "VUID-VkSpecializationInfo-offset-00773",
   5755           "text": " The <code>offset</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than <code>dataSize</code>"
   5756         },
   5757         {
   5758           "vuid": "VUID-VkSpecializationInfo-pMapEntries-00774",
   5759           "text": " The <code>size</code> member of each element of <code>pMapEntries</code> <strong class=\"purple\">must</strong> be less than or equal to <code>dataSize</code> minus <code>offset</code>"
   5760         },
   5761         {
   5762           "vuid": "VUID-VkSpecializationInfo-pMapEntries-parameter",
   5763           "text": " If <code>mapEntryCount</code> is not <code>0</code>, <code>pMapEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>mapEntryCount</code> valid <code>VkSpecializationMapEntry</code> structures"
   5764         },
   5765         {
   5766           "vuid": "VUID-VkSpecializationInfo-pData-parameter",
   5767           "text": " If <code>dataSize</code> is not <code>0</code>, <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
   5768         }
   5769       ]
   5770     },
   5771     "VkSpecializationMapEntry": {
   5772       "core": [
   5773         {
   5774           "vuid": "VUID-VkSpecializationMapEntry-constantID-00776",
   5775           "text": " For a <code>constantID</code> specialization constant declared in a shader, <code>size</code> <strong class=\"purple\">must</strong> match the byte size of the <code>constantID</code>. If the specialization constant is of type <code>boolean</code>, <code>size</code> <strong class=\"purple\">must</strong> be the byte size of <code>VkBool32</code>"
   5776         }
   5777       ]
   5778     },
   5779     "vkCmdBindPipeline": {
   5780       "core": [
   5781         {
   5782           "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00777",
   5783           "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   5784         },
   5785         {
   5786           "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00778",
   5787           "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   5788         },
   5789         {
   5790           "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00779",
   5791           "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a compute pipeline"
   5792         },
   5793         {
   5794           "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-00780",
   5795           "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, <code>pipeline</code> <strong class=\"purple\">must</strong> be a graphics pipeline"
   5796         },
   5797         {
   5798           "vuid": "VUID-vkCmdBindPipeline-pipeline-00781",
   5799           "text": " If the <a href=\"#features-variableMultisampleRate\">variable multisample rate</a> feature is not supported, <code>pipeline</code> is a graphics pipeline, the current subpass has no attachments, and this is not the first call to this function with a graphics pipeline after transitioning to the current subpass, then the sample count specified by this pipeline <strong class=\"purple\">must</strong> match that set in the previous pipeline"
   5800         },
   5801         {
   5802           "vuid": "VUID-vkCmdBindPipeline-commandBuffer-parameter",
   5803           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   5804         },
   5805         {
   5806           "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-parameter",
   5807           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
   5808         },
   5809         {
   5810           "vuid": "VUID-vkCmdBindPipeline-pipeline-parameter",
   5811           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
   5812         },
   5813         {
   5814           "vuid": "VUID-vkCmdBindPipeline-commandBuffer-recording",
   5815           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   5816         },
   5817         {
   5818           "vuid": "VUID-vkCmdBindPipeline-commandBuffer-cmdpool",
   5819           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   5820         },
   5821         {
   5822           "vuid": "VUID-vkCmdBindPipeline-commonparent",
   5823           "text": " Both of <code>commandBuffer</code>, and <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   5824         }
   5825       ],
   5826       "(VK_EXT_sample_locations)": [
   5827         {
   5828           "vuid": "VUID-vkCmdBindPipeline-variableSampleLocations-01525",
   5829           "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code>, and <code>pipeline</code> is a graphics pipeline created with a <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> structure having its <code>sampleLocationsEnable</code> member set to <code>VK_TRUE</code> but without <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> enabled then the current render pass instance <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the <code>sampleLocationsInfo</code> specified in <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a> when the pipeline was created"
   5830         }
   5831       ],
   5832       "(VK_EXT_transform_feedback)": [
   5833         {
   5834           "vuid": "VUID-vkCmdBindPipeline-None-02323",
   5835           "text": " This command <strong class=\"purple\">must</strong> not be recorded when transform feedback is active"
   5836         }
   5837       ],
   5838       "(VK_NV_ray_tracing)": [
   5839         {
   5840           "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02391",
   5841           "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   5842         },
   5843         {
   5844           "vuid": "VUID-vkCmdBindPipeline-pipelineBindPoint-02392",
   5845           "text": " If <code>pipelineBindPoint</code> is <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, the <code>pipeline</code> <strong class=\"purple\">must</strong> be a ray tracing pipeline"
   5846         }
   5847       ]
   5848     },
   5849     "vkGetShaderInfoAMD": {
   5850       "(VK_AMD_shader_info)": [
   5851         {
   5852           "vuid": "VUID-vkGetShaderInfoAMD-device-parameter",
   5853           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   5854         },
   5855         {
   5856           "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parameter",
   5857           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
   5858         },
   5859         {
   5860           "vuid": "VUID-vkGetShaderInfoAMD-shaderStage-parameter",
   5861           "text": " <code>shaderStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> value"
   5862         },
   5863         {
   5864           "vuid": "VUID-vkGetShaderInfoAMD-infoType-parameter",
   5865           "text": " <code>infoType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShaderInfoTypeAMD\">VkShaderInfoTypeAMD</a> value"
   5866         },
   5867         {
   5868           "vuid": "VUID-vkGetShaderInfoAMD-pInfoSize-parameter",
   5869           "text": " <code>pInfoSize</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>size_t</code> value"
   5870         },
   5871         {
   5872           "vuid": "VUID-vkGetShaderInfoAMD-pInfo-parameter",
   5873           "text": " If the value referenced by <code>pInfoSize</code> is not <code>0</code>, and <code>pInfo</code> is not <code>NULL</code>, <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pInfoSize</code> bytes"
   5874         },
   5875         {
   5876           "vuid": "VUID-vkGetShaderInfoAMD-pipeline-parent",
   5877           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5878         }
   5879       ]
   5880     },
   5881     "vkCreateRayTracingPipelinesNV": {
   5882       "(VK_NV_ray_tracing)": [
   5883         {
   5884           "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02402",
   5885           "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and the <code>basePipelineIndex</code> member of that same element is not <code>-1</code>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be less than the index into <code>pCreateInfos</code> that corresponds to that element"
   5886         },
   5887         {
   5888           "vuid": "VUID-vkCreateRayTracingPipelinesNV-flags-02403",
   5889           "text": " If the <code>flags</code> member of any element of <code>pCreateInfos</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, the base pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT</code> flag set"
   5890         },
   5891         {
   5892           "vuid": "VUID-vkCreateRayTracingPipelinesNV-device-parameter",
   5893           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   5894         },
   5895         {
   5896           "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parameter",
   5897           "text": " If <code>pipelineCache</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineCache</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineCache</code> handle"
   5898         },
   5899         {
   5900           "vuid": "VUID-vkCreateRayTracingPipelinesNV-pCreateInfos-parameter",
   5901           "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> valid <code>VkRayTracingPipelineCreateInfoNV</code> structures"
   5902         },
   5903         {
   5904           "vuid": "VUID-vkCreateRayTracingPipelinesNV-pAllocator-parameter",
   5905           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   5906         },
   5907         {
   5908           "vuid": "VUID-vkCreateRayTracingPipelinesNV-pPipelines-parameter",
   5909           "text": " <code>pPipelines</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>createInfoCount</code> <code>VkPipeline</code> handles"
   5910         },
   5911         {
   5912           "vuid": "VUID-vkCreateRayTracingPipelinesNV-createInfoCount-arraylength",
   5913           "text": " <code>createInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   5914         },
   5915         {
   5916           "vuid": "VUID-vkCreateRayTracingPipelinesNV-pipelineCache-parent",
   5917           "text": " If <code>pipelineCache</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   5918         }
   5919       ]
   5920     },
   5921     "VkRayTracingPipelineCreateInfoNV": {
   5922       "(VK_NV_ray_tracing)": [
   5923         {
   5924           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02404",
   5925           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be a valid handle to a ray tracing <code>VkPipeline</code>"
   5926         },
   5927         {
   5928           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02405",
   5929           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be a valid index into the calling command&#8217;s <code>pCreateInfos</code> parameter"
   5930         },
   5931         {
   5932           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02406",
   5933           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineIndex</code> is not <code>-1</code>, <code>basePipelineHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   5934         },
   5935         {
   5936           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-02407",
   5937           "text": " If <code>flags</code> contains the <code>VK_PIPELINE_CREATE_DERIVATIVE_BIT</code> flag, and <code>basePipelineHandle</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>basePipelineIndex</code> <strong class=\"purple\">must</strong> be <code>-1</code>"
   5938         },
   5939         {
   5940           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stage-02408",
   5941           "text": " The <code>stage</code> member of one element of <code>pStages</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>"
   5942         },
   5943         {
   5944           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-02409",
   5945           "text": " The shader code for the entry points identified by <code>pStages</code>, and the rest of the state identified by this structure <strong class=\"purple\">must</strong> adhere to the pipeline linking rules described in the <a href=\"#interfaces\">Shader Interfaces</a> chapter"
   5946         },
   5947         {
   5948           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02410",
   5949           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be <a href=\"#descriptorsets-pipelinelayout-consistency\">consistent</a> with all shaders specified in <code>pStages</code>"
   5950         },
   5951         {
   5952           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-02411",
   5953           "text": " The number of resources in <code>layout</code> accessible to each shader stage that is used by the pipeline <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxPerStageResources</code>"
   5954         },
   5955         {
   5956           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-maxRecursionDepth-02412",
   5957           "text": " <code>maxRecursionDepth</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxRecursionDepth</code>"
   5958         },
   5959         {
   5960           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-sType-sType",
   5961           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV</code>"
   5962         },
   5963         {
   5964           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pNext-pNext",
   5965           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   5966         },
   5967         {
   5968           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-flags-parameter",
   5969           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkPipelineCreateFlagBits\">VkPipelineCreateFlagBits</a> values"
   5970         },
   5971         {
   5972           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pStages-parameter",
   5973           "text": " <code>pStages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>stageCount</code> valid <code>VkPipelineShaderStageCreateInfo</code> structures"
   5974         },
   5975         {
   5976           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-pGroups-parameter",
   5977           "text": " <code>pGroups</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>groupCount</code> valid <code>VkRayTracingShaderGroupCreateInfoNV</code> structures"
   5978         },
   5979         {
   5980           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-layout-parameter",
   5981           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   5982         },
   5983         {
   5984           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-stageCount-arraylength",
   5985           "text": " <code>stageCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   5986         },
   5987         {
   5988           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-groupCount-arraylength",
   5989           "text": " <code>groupCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   5990         },
   5991         {
   5992           "vuid": "VUID-VkRayTracingPipelineCreateInfoNV-commonparent",
   5993           "text": " Both of <code>basePipelineHandle</code>, and <code>layout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   5994         }
   5995       ]
   5996     },
   5997     "VkRayTracingShaderGroupCreateInfoNV": {
   5998       "(VK_NV_ray_tracing)": [
   5999         {
   6000           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02413",
   6001           "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>generalShader</code> <strong class=\"purple\">must</strong> be a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_RAYGEN_BIT_NV</code>, <code>VK_SHADER_STAGE_MISS_BIT_NV</code>, or <code>VK_SHADER_STAGE_CALLABLE_BIT_NV</code>"
   6002         },
   6003         {
   6004           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02414",
   6005           "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV</code> then <code>closestHitShader</code>, <code>anyHitShader</code>, and <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_NV</code>"
   6006         },
   6007         {
   6008           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02415",
   6009           "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_INTERSECTION_BIT_NV</code>"
   6010         },
   6011         {
   6012           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-02416",
   6013           "text": " If <code>type</code> is <code>VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV</code> then <code>intersectionShader</code> <strong class=\"purple\">must</strong> be <code>VK_SHADER_UNUSED_NV</code>"
   6014         },
   6015         {
   6016           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-closestHitShader-02417",
   6017           "text": " <code>closestHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV</code>"
   6018         },
   6019         {
   6020           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-anyHitShader-02418",
   6021           "text": " <code>anyHitShader</code> <strong class=\"purple\">must</strong> be either <code>VK_SHADER_UNUSED_NV</code> or a valid index into <code>pStages</code> referring to a shader of <code>VK_SHADER_STAGE_ANY_HIT_BIT_NV</code>"
   6022         },
   6023         {
   6024           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-sType-sType",
   6025           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV</code>"
   6026         },
   6027         {
   6028           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-pNext-pNext",
   6029           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   6030         },
   6031         {
   6032           "vuid": "VUID-VkRayTracingShaderGroupCreateInfoNV-type-parameter",
   6033           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRayTracingShaderGroupTypeNV\">VkRayTracingShaderGroupTypeNV</a> value"
   6034         }
   6035       ]
   6036     },
   6037     "vkGetRayTracingShaderGroupHandlesNV": {
   6038       "(VK_NV_ray_tracing)": [
   6039         {
   6040           "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-firstGroup-02419",
   6041           "text": " The sum of <code>firstGroup</code> and <code>groupCount</code> <strong class=\"purple\">must</strong> be less than the number of shader groups in <code>pipeline</code>."
   6042         },
   6043         {
   6044           "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-02420",
   6045           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be at least <span class=\"eq\"><code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code> {times} <code>groupCount</code></span>"
   6046         },
   6047         {
   6048           "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-device-parameter",
   6049           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6050         },
   6051         {
   6052           "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parameter",
   6053           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
   6054         },
   6055         {
   6056           "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pData-parameter",
   6057           "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
   6058         },
   6059         {
   6060           "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-dataSize-arraylength",
   6061           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   6062         },
   6063         {
   6064           "vuid": "VUID-vkGetRayTracingShaderGroupHandlesNV-pipeline-parent",
   6065           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   6066         }
   6067       ]
   6068     },
   6069     "vkCompileDeferredNV": {
   6070       "(VK_NV_ray_tracing)": [
   6071         {
   6072           "vuid": "VUID-vkCompileDeferredNV-pipeline-02237",
   6073           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created with <code>VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV</code>"
   6074         },
   6075         {
   6076           "vuid": "VUID-vkCompileDeferredNV-shader-02238",
   6077           "text": " <code>shader</code> <strong class=\"purple\">must</strong> not have been called as a deferred compile before"
   6078         },
   6079         {
   6080           "vuid": "VUID-vkCompileDeferredNV-device-parameter",
   6081           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6082         },
   6083         {
   6084           "vuid": "VUID-vkCompileDeferredNV-pipeline-parameter",
   6085           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
   6086         },
   6087         {
   6088           "vuid": "VUID-vkCompileDeferredNV-pipeline-parent",
   6089           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   6090         }
   6091       ]
   6092     },
   6093     "VkAllocationCallbacks": {
   6094       "core": [
   6095         {
   6096           "vuid": "VUID-VkAllocationCallbacks-pfnAllocation-00632",
   6097           "text": " <code>pfnAllocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkAllocationFunction\">PFN_vkAllocationFunction</a>"
   6098         },
   6099         {
   6100           "vuid": "VUID-VkAllocationCallbacks-pfnReallocation-00633",
   6101           "text": " <code>pfnReallocation</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkReallocationFunction\">PFN_vkReallocationFunction</a>"
   6102         },
   6103         {
   6104           "vuid": "VUID-VkAllocationCallbacks-pfnFree-00634",
   6105           "text": " <code>pfnFree</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid user-defined <a href=\"#PFN_vkFreeFunction\">PFN_vkFreeFunction</a>"
   6106         },
   6107         {
   6108           "vuid": "VUID-VkAllocationCallbacks-pfnInternalAllocation-00635",
   6109           "text": " If either of <code>pfnInternalAllocation</code> or <code>pfnInternalFree</code> is not <code>NULL</code>, both <strong class=\"purple\">must</strong> be valid callbacks"
   6110         }
   6111       ]
   6112     },
   6113     "vkGetPhysicalDeviceMemoryProperties": {
   6114       "core": [
   6115         {
   6116           "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-physicalDevice-parameter",
   6117           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   6118         },
   6119         {
   6120           "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties-pMemoryProperties-parameter",
   6121           "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties</code> structure"
   6122         }
   6123       ]
   6124     },
   6125     "vkGetPhysicalDeviceMemoryProperties2": {
   6126       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   6127         {
   6128           "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-physicalDevice-parameter",
   6129           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   6130         },
   6131         {
   6132           "vuid": "VUID-vkGetPhysicalDeviceMemoryProperties2-pMemoryProperties-parameter",
   6133           "text": " <code>pMemoryProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceMemoryProperties2</code> structure"
   6134         }
   6135       ]
   6136     },
   6137     "VkPhysicalDeviceMemoryProperties2": {
   6138       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   6139         {
   6140           "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-sType-sType",
   6141           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2</code>"
   6142         },
   6143         {
   6144           "vuid": "VUID-VkPhysicalDeviceMemoryProperties2-pNext-pNext",
   6145           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPhysicalDeviceMemoryBudgetPropertiesEXT\">VkPhysicalDeviceMemoryBudgetPropertiesEXT</a>"
   6146         }
   6147       ]
   6148     },
   6149     "VkPhysicalDeviceMemoryBudgetPropertiesEXT": {
   6150       "(VK_EXT_memory_budget)": [
   6151         {
   6152           "vuid": "VUID-VkPhysicalDeviceMemoryBudgetPropertiesEXT-sType-sType",
   6153           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT</code>"
   6154         }
   6155       ]
   6156     },
   6157     "vkAllocateMemory": {
   6158       "core": [
   6159         {
   6160           "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01713",
   6161           "text": " <code>pAllocateInfo</code>-&gt;<code>allocationSize</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryHeaps</code>[<code>pAllocateInfo</code>-&gt;<code>memoryTypeIndex</code>].<code>size</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from."
   6162         },
   6163         {
   6164           "vuid": "VUID-vkAllocateMemory-pAllocateInfo-01714",
   6165           "text": " <code>pAllocateInfo</code>-&gt;<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceMemoryProperties\">VkPhysicalDeviceMemoryProperties</a>::<code>memoryTypeCount</code> as returned by <a href=\"#vkGetPhysicalDeviceMemoryProperties\">vkGetPhysicalDeviceMemoryProperties</a> for the <a href=\"#VkPhysicalDevice\">VkPhysicalDevice</a> that <code>device</code> was created from."
   6166         },
   6167         {
   6168           "vuid": "VUID-vkAllocateMemory-device-parameter",
   6169           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6170         },
   6171         {
   6172           "vuid": "VUID-vkAllocateMemory-pAllocateInfo-parameter",
   6173           "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryAllocateInfo</code> structure"
   6174         },
   6175         {
   6176           "vuid": "VUID-vkAllocateMemory-pAllocator-parameter",
   6177           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   6178         },
   6179         {
   6180           "vuid": "VUID-vkAllocateMemory-pMemory-parameter",
   6181           "text": " <code>pMemory</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceMemory</code> handle"
   6182         }
   6183       ]
   6184     },
   6185     "VkMemoryAllocateInfo": {
   6186       "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
   6187         {
   6188           "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00638",
   6189           "text": " <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   6190         }
   6191       ],
   6192       "(VK_KHR_external_memory)+(VK_KHR_dedicated_allocation,VK_NV_dedicated_allocation)": [
   6193         {
   6194           "vuid": "VUID-VkMemoryAllocateInfo-pNext-00639",
   6195           "text": "     If the <code>pNext</code> chain contains an instance of     <code>VkExportMemoryAllocateInfo</code>, and any of the handle types specified     in <code>VkExportMemoryAllocateInfo</code>::<code>handleTypes</code> require a     dedicated allocation, as reported by     <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> in     <code>VkExternalImageFormatProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code>     or     <code>VkExternalBufferProperties</code>::<code>externalMemoryProperties</code>::<code>externalMemoryFeatures</code>,     the <code>pNext</code> chain must contain an instance of ifdef::VK_KHR_dedicated_allocation[<a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>]"
   6196         }
   6197       ],
   6198       "(VK_KHR_external_memory)+(VK_NV_external_memory)": [
   6199         {
   6200           "vuid": "VUID-VkMemoryAllocateInfo-pNext-00640",
   6201           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a> or <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>."
   6202         }
   6203       ],
   6204       "(VK_KHR_external_memory_win32+VK_NV_external_memory_win32)": [
   6205         {
   6206           "vuid": "VUID-VkMemoryAllocateInfo-pNext-00641",
   6207           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>."
   6208         }
   6209       ],
   6210       "(VK_KHR_external_memory_fd)": [
   6211         {
   6212           "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01742",
   6213           "text": " If the parameters define an import operation, the external handle specified was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created."
   6214         },
   6215         {
   6216           "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00648",
   6217           "text": " If the parameters define an import operation and the external handle is a POSIX file descriptor created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryFdPropertiesKHR\">vkGetMemoryFdPropertiesKHR</a>."
   6218         }
   6219       ],
   6220       "(VK_KHR_external_memory+VK_KHR_device_group)": [
   6221         {
   6222           "vuid": "VUID-VkMemoryAllocateInfo-None-00643",
   6223           "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the device mask specified by <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a> <strong class=\"purple\">must</strong> match that specified when the memory object being imported was allocated."
   6224         },
   6225         {
   6226           "vuid": "VUID-VkMemoryAllocateInfo-None-00644",
   6227           "text": " If the parameters define an import operation and the external handle specified was created by the Vulkan API, the list of physical devices that comprise the logical device passed to <a href=\"#vkAllocateMemory\">vkAllocateMemory</a> <strong class=\"purple\">must</strong> match the list of physical devices that comprise the logical device on which the memory was originally allocated."
   6228         }
   6229       ],
   6230       "(VK_KHR_external_memory_win32)": [
   6231         {
   6232           "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-00645",
   6233           "text": " If the parameters define an import operation and the external handle is an NT handle or a global share handle created outside of the Vulkan API, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryWin32HandlePropertiesKHR\">vkGetMemoryWin32HandlePropertiesKHR</a>."
   6234         },
   6235         {
   6236           "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01743",
   6237           "text": " If the parameters define an import operation, the external handle was created by the Vulkan API, and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR</code>, then the values of <code>allocationSize</code> and <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> match those specified when the memory object being imported was created."
   6238         },
   6239         {
   6240           "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00646",
   6241           "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size reported in the memory requirements of the <code>image</code> or <code>buffer</code> member of the instance of <code>VkDedicatedAllocationMemoryAllocateInfoNV</code> included in the <code>pNext</code> chain."
   6242         },
   6243         {
   6244           "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-00647",
   6245           "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> match the size specified when creating the Direct3D 12 heap from which the external handle was extracted."
   6246         }
   6247       ],
   6248       "(VK_VERSION_1_1)": [
   6249         {
   6250           "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01872",
   6251           "text": " If the protected memory feature is not enabled, the <code>VkMemoryAllocateInfo</code>::<code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> not indicate a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>."
   6252         }
   6253       ],
   6254       "(VK_EXT_external_memory_host)": [
   6255         {
   6256           "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-01744",
   6257           "text": " If the parameters define an import operation and the external handle is a host pointer, the value of <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetMemoryHostPointerPropertiesEXT\">vkGetMemoryHostPointerPropertiesEXT</a>"
   6258         },
   6259         {
   6260           "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-01745",
   6261           "text": " If the parameters define an import operation and the external handle is a host pointer, <code>allocationSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
   6262         }
   6263       ],
   6264       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   6265         {
   6266           "vuid": "VUID-VkMemoryAllocateInfo-allocationSize-02383",
   6267           "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>allocationSize</code> <strong class=\"purple\">must</strong> be the size returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer."
   6268         },
   6269         {
   6270           "vuid": "VUID-VkMemoryAllocateInfo-pNext-02384",
   6271           "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, and the <code>pNext</code> chain does not contain an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> or <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> is <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer <strong class=\"purple\">must</strong> have a <code>AHardwareBuffer_Desc</code>::<code>format</code> of <code>AHARDWAREBUFFER_FORMAT_BLOB</code> and a <code>AHardwareBuffer_Desc</code>::<code>usage</code> that includes <code>AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER</code>."
   6272         },
   6273         {
   6274           "vuid": "VUID-VkMemoryAllocateInfo-memoryTypeIndex-02385",
   6275           "text": " If the parameters define an import operation and the external handle type is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>memoryTypeIndex</code> <strong class=\"purple\">must</strong> be one of those returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> for the Android hardware buffer."
   6276         },
   6277         {
   6278           "vuid": "VUID-VkMemoryAllocateInfo-pNext-01874",
   6279           "text": " If the parameters do not define an import operation, and the <code>pNext</code> chain contains an instance of <code>VkExportMemoryAllocateInfo</code> with <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> included in its <code>handleTypes</code> member, and the <code>pNext</code> contains an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> not equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>allocationSize</code> <strong class=\"purple\">must</strong> be <code>0</code>, otherwise <code>allocationSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
   6280         },
   6281         {
   6282           "vuid": "VUID-VkMemoryAllocateInfo-pNext-02386",
   6283           "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> <strong class=\"purple\">must</strong> include at least one of <code>AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT</code> or <code>AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE</code>."
   6284         },
   6285         {
   6286           "vuid": "VUID-VkMemoryAllocateInfo-pNext-02387",
   6287           "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the format of <code>image</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code> or the format returned by <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a> in <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>::<code>format</code> for the Android hardware buffer."
   6288         },
   6289         {
   6290           "vuid": "VUID-VkMemoryAllocateInfo-pNext-02388",
   6291           "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the width, height, and array layer dimensions of <code>image</code> and the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code> <strong class=\"purple\">must</strong> be identical."
   6292         },
   6293         {
   6294           "vuid": "VUID-VkMemoryAllocateInfo-pNext-02389",
   6295           "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> includes <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have a complete mipmap chain."
   6296         },
   6297         {
   6298           "vuid": "VUID-VkMemoryAllocateInfo-pNext-02586",
   6299           "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, and the Android hardware buffer&#8217;s <a href=\"#AHardwareBuffer\">AHardwareBuffer</a>::<code>usage</code> does not include <code>AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE</code>, the <code>image</code> <strong class=\"purple\">must</strong> have exactly one mipmap level."
   6300         },
   6301         {
   6302           "vuid": "VUID-VkMemoryAllocateInfo-pNext-02390",
   6303           "text": " If the parameters define an import operation, the external handle is an Android hardware buffer, and the <code>pNext</code> chain includes an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with <code>image</code> that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, each bit set in the usage of <code>image</code> <strong class=\"purple\">must</strong> be listed in <a href=\"#memory-external-android-hardware-buffer-usage\">AHardwareBuffer Usage Equivalence</a>, and if there is a corresponding <code>AHARDWAREBUFFER_USAGE</code> bit listed that bit <strong class=\"purple\">must</strong> be included in the Android hardware buffer&#8217;s <code>AHardwareBuffer_Desc</code>::<code>usage</code>."
   6304         }
   6305       ],
   6306       "core": [
   6307         {
   6308           "vuid": "VUID-VkMemoryAllocateInfo-sType-sType",
   6309           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO</code>"
   6310         },
   6311         {
   6312           "vuid": "VUID-VkMemoryAllocateInfo-pNext-pNext",
   6313           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>, <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>, <a href=\"#VkExportMemoryWin32HandleInfoKHR\">VkExportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkExportMemoryWin32HandleInfoNV\">VkExportMemoryWin32HandleInfoNV</a>, <a href=\"#VkImportAndroidHardwareBufferInfoANDROID\">VkImportAndroidHardwareBufferInfoANDROID</a>, <a href=\"#VkImportMemoryFdInfoKHR\">VkImportMemoryFdInfoKHR</a>, <a href=\"#VkImportMemoryHostPointerInfoEXT\">VkImportMemoryHostPointerInfoEXT</a>, <a href=\"#VkImportMemoryWin32HandleInfoKHR\">VkImportMemoryWin32HandleInfoKHR</a>, <a href=\"#VkImportMemoryWin32HandleInfoNV\">VkImportMemoryWin32HandleInfoNV</a>, <a href=\"#VkMemoryAllocateFlagsInfo\">VkMemoryAllocateFlagsInfo</a>, <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>, or <a href=\"#VkMemoryPriorityAllocateInfoEXT\">VkMemoryPriorityAllocateInfoEXT</a>"
   6314         },
   6315         {
   6316           "vuid": "VUID-VkMemoryAllocateInfo-sType-unique",
   6317           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   6318         }
   6319       ]
   6320     },
   6321     "VkMemoryDedicatedAllocateInfo": {
   6322       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   6323         {
   6324           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01432",
   6325           "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   6326         },
   6327         {
   6328           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01433",
   6329           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
   6330         },
   6331         {
   6332           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01434",
   6333           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> have been created without <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code> set in <code>VkImageCreateInfo</code>::<code>flags</code>"
   6334         },
   6335         {
   6336           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01435",
   6337           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
   6338         },
   6339         {
   6340           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01436",
   6341           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> have been created without <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code> set in <a href=\"#VkBufferCreateInfo\">VkBufferCreateInfo</a>::<code>flags</code>"
   6342         },
   6343         {
   6344           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-sType-sType",
   6345           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO</code>"
   6346         },
   6347         {
   6348           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-parameter",
   6349           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   6350         },
   6351         {
   6352           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-parameter",
   6353           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   6354         },
   6355         {
   6356           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-commonparent",
   6357           "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   6358         }
   6359       ],
   6360       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_win32)": [
   6361         {
   6362           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01876",
   6363           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory."
   6364         },
   6365         {
   6366           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01877",
   6367           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, and the external handle was created by the Vulkan API, then the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory."
   6368         }
   6369       ],
   6370       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_external_memory_fd)": [
   6371         {
   6372           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01878",
   6373           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> must be identical to the image associated with the imported memory."
   6374         },
   6375         {
   6376           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-buffer-01879",
   6377           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation with handle type <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT</code>, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> must be identical to the buffer associated with the imported memory."
   6378         }
   6379       ],
   6380       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_KHR_sampler_ycbcr_conversion)": [
   6381         {
   6382           "vuid": "VUID-VkMemoryDedicatedAllocateInfo-image-01797",
   6383           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code>"
   6384         }
   6385       ]
   6386     },
   6387     "VkDedicatedAllocationMemoryAllocateInfoNV": {
   6388       "(VK_NV_dedicated_allocation)": [
   6389         {
   6390           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00649",
   6391           "text": " At least one of <code>image</code> and <code>buffer</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   6392         },
   6393         {
   6394           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00650",
   6395           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationImageCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
   6396         },
   6397         {
   6398           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00651",
   6399           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the buffer <strong class=\"purple\">must</strong> have been created with <code>VkDedicatedAllocationBufferCreateInfoNV</code>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>"
   6400         },
   6401         {
   6402           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00652",
   6403           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the image"
   6404         },
   6405         {
   6406           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00653",
   6407           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>VkMemoryAllocateInfo</code>::<code>allocationSize</code> <strong class=\"purple\">must</strong> equal the <code>VkMemoryRequirements</code>::<code>size</code> of the buffer"
   6408         },
   6409         {
   6410           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-sType-sType",
   6411           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV</code>"
   6412         },
   6413         {
   6414           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-parameter",
   6415           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   6416         },
   6417         {
   6418           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-parameter",
   6419           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   6420         },
   6421         {
   6422           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-commonparent",
   6423           "text": " Both of <code>buffer</code>, and <code>image</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   6424         }
   6425       ],
   6426       "(VK_NV_dedicated_allocation)+(VK_KHR_external_memory_win32,VK_KHR_external_memory_fd)": [
   6427         {
   6428           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-image-00654",
   6429           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated image allocation and <code>image</code> <strong class=\"purple\">must</strong> be identical to the image associated with the imported memory."
   6430         },
   6431         {
   6432           "vuid": "VUID-VkDedicatedAllocationMemoryAllocateInfoNV-buffer-00655",
   6433           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> and <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> defines a memory import operation, the memory being imported <strong class=\"purple\">must</strong> also be a dedicated buffer allocation and <code>buffer</code> <strong class=\"purple\">must</strong> be identical to the buffer associated with the imported memory."
   6434         }
   6435       ]
   6436     },
   6437     "VkMemoryPriorityAllocateInfoEXT": {
   6438       "(VK_EXT_memory_priority)": [
   6439         {
   6440           "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-priority-02602",
   6441           "text": " <code>priority</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
   6442         },
   6443         {
   6444           "vuid": "VUID-VkMemoryPriorityAllocateInfoEXT-sType-sType",
   6445           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT</code>"
   6446         }
   6447       ]
   6448     },
   6449     "VkExportMemoryAllocateInfo": {
   6450       "(VK_VERSION_1_1,VK_KHR_external_memory)": [
   6451         {
   6452           "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-00656",
   6453           "text": " The bits in <code>handleTypes</code> <strong class=\"purple\">must</strong> be supported and compatible, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
   6454         },
   6455         {
   6456           "vuid": "VUID-VkExportMemoryAllocateInfo-sType-sType",
   6457           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO</code>"
   6458         },
   6459         {
   6460           "vuid": "VUID-VkExportMemoryAllocateInfo-handleTypes-parameter",
   6461           "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
   6462         }
   6463       ]
   6464     },
   6465     "VkExportMemoryWin32HandleInfoKHR": {
   6466       "(VK_KHR_external_memory_win32)": [
   6467         {
   6468           "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-handleTypes-00657",
   6469           "text": " If <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> does not include <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>VkExportMemoryWin32HandleInfoKHR</code> <strong class=\"purple\">must</strong> not be in the <code>pNext</code> chain of <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a>."
   6470         },
   6471         {
   6472           "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-sType-sType",
   6473           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
   6474         },
   6475         {
   6476           "vuid": "VUID-VkExportMemoryWin32HandleInfoKHR-pAttributes-parameter",
   6477           "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
   6478         }
   6479       ]
   6480     },
   6481     "VkImportMemoryWin32HandleInfoKHR": {
   6482       "(VK_KHR_external_memory_win32)": [
   6483         {
   6484           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00658",
   6485           "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
   6486         },
   6487         {
   6488           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-00659",
   6489           "text": " The memory from which <code>handle</code> was exported, or the memory named by <code>name</code> <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>."
   6490         },
   6491         {
   6492           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00660",
   6493           "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
   6494         },
   6495         {
   6496           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01439",
   6497           "text": " If <code>handleType</code> is not <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT</code>, <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT</code>, or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT</code>, <code>name</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
   6498         },
   6499         {
   6500           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-01440",
   6501           "text": " If <code>handleType</code> is not <code>0</code> and <code>handle</code> is <code>NULL</code>, <code>name</code> <strong class=\"purple\">must</strong> name a valid memory resource of the type specified by <code>handleType</code>."
   6502         },
   6503         {
   6504           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-00661",
   6505           "text": " If <code>handleType</code> is not <code>0</code> and <code>name</code> is <code>NULL</code>, <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
   6506         },
   6507         {
   6508           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01441",
   6509           "text": " if <code>handle</code> is not <code>NULL</code>, <code>name</code> must be <code>NULL</code>."
   6510         },
   6511         {
   6512           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handle-01518",
   6513           "text": " If <code>handle</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>."
   6514         },
   6515         {
   6516           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-name-01519",
   6517           "text": " If <code>name</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>."
   6518         },
   6519         {
   6520           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-sType-sType",
   6521           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR</code>"
   6522         },
   6523         {
   6524           "vuid": "VUID-VkImportMemoryWin32HandleInfoKHR-handleType-parameter",
   6525           "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   6526         }
   6527       ]
   6528     },
   6529     "vkGetMemoryWin32HandleKHR": {
   6530       "(VK_KHR_external_memory_win32)": [
   6531         {
   6532           "vuid": "VUID-vkGetMemoryWin32HandleKHR-device-parameter",
   6533           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6534         },
   6535         {
   6536           "vuid": "VUID-vkGetMemoryWin32HandleKHR-pGetWin32HandleInfo-parameter",
   6537           "text": " <code>pGetWin32HandleInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetWin32HandleInfoKHR</code> structure"
   6538         },
   6539         {
   6540           "vuid": "VUID-vkGetMemoryWin32HandleKHR-pHandle-parameter",
   6541           "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
   6542         }
   6543       ]
   6544     },
   6545     "VkMemoryGetWin32HandleInfoKHR": {
   6546       "(VK_KHR_external_memory_win32)": [
   6547         {
   6548           "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00662",
   6549           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created."
   6550         },
   6551         {
   6552           "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00663",
   6553           "text": " If <code>handleType</code> is defined as an NT handle, <a href=\"#vkGetMemoryWin32HandleKHR\">vkGetMemoryWin32HandleKHR</a> <strong class=\"purple\">must</strong> be called no more than once for each valid unique combination of <code>memory</code> and <code>handleType</code>."
   6554         },
   6555         {
   6556           "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-00664",
   6557           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as an NT handle or a global share handle."
   6558         },
   6559         {
   6560           "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-sType-sType",
   6561           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR</code>"
   6562         },
   6563         {
   6564           "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-pNext-pNext",
   6565           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   6566         },
   6567         {
   6568           "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-memory-parameter",
   6569           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   6570         },
   6571         {
   6572           "vuid": "VUID-VkMemoryGetWin32HandleInfoKHR-handleType-parameter",
   6573           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   6574         }
   6575       ]
   6576     },
   6577     "vkGetMemoryWin32HandlePropertiesKHR": {
   6578       "(VK_KHR_external_memory_win32)": [
   6579         {
   6580           "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handle-00665",
   6581           "text": " <code>handle</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API."
   6582         },
   6583         {
   6584           "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-00666",
   6585           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be one of the handle types defined as opaque."
   6586         },
   6587         {
   6588           "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-device-parameter",
   6589           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6590         },
   6591         {
   6592           "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-handleType-parameter",
   6593           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   6594         },
   6595         {
   6596           "vuid": "VUID-vkGetMemoryWin32HandlePropertiesKHR-pMemoryWin32HandleProperties-parameter",
   6597           "text": " <code>pMemoryWin32HandleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryWin32HandlePropertiesKHR</code> structure"
   6598         }
   6599       ]
   6600     },
   6601     "VkMemoryWin32HandlePropertiesKHR": {
   6602       "(VK_KHR_external_memory_win32)": [
   6603         {
   6604           "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-sType-sType",
   6605           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR</code>"
   6606         },
   6607         {
   6608           "vuid": "VUID-VkMemoryWin32HandlePropertiesKHR-pNext-pNext",
   6609           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   6610         }
   6611       ]
   6612     },
   6613     "VkImportMemoryFdInfoKHR": {
   6614       "(VK_KHR_external_memory_fd)": [
   6615         {
   6616           "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00667",
   6617           "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
   6618         },
   6619         {
   6620           "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-00668",
   6621           "text": " The memory from which <code>fd</code> was exported <strong class=\"purple\">must</strong> have been created on the same underlying physical device as <code>device</code>."
   6622         },
   6623         {
   6624           "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00669",
   6625           "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
   6626         },
   6627         {
   6628           "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-00670",
   6629           "text": " If <code>handleType</code> is not <code>0</code>, <code>fd</code> <strong class=\"purple\">must</strong> be a valid handle of the type specified by <code>handleType</code>."
   6630         },
   6631         {
   6632           "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01746",
   6633           "text": " The memory represented by <code>fd</code> <strong class=\"purple\">must</strong> have been created from a physical device and driver that is compatible with <code>device</code> and <code>handleType</code>, as described in <a href=\"#external-memory-handle-types-compatibility\">External memory handle types compatibility</a>."
   6634         },
   6635         {
   6636           "vuid": "VUID-VkImportMemoryFdInfoKHR-fd-01520",
   6637           "text": " <code>fd</code> <strong class=\"purple\">must</strong> obey any requirements listed for <code>handleType</code> in <a href=\"#external-memory-handle-types-compatibility\">external memory handle types compatibility</a>."
   6638         },
   6639         {
   6640           "vuid": "VUID-VkImportMemoryFdInfoKHR-sType-sType",
   6641           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR</code>"
   6642         },
   6643         {
   6644           "vuid": "VUID-VkImportMemoryFdInfoKHR-handleType-parameter",
   6645           "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   6646         }
   6647       ]
   6648     },
   6649     "vkGetMemoryFdKHR": {
   6650       "(VK_KHR_external_memory_fd)": [
   6651         {
   6652           "vuid": "VUID-vkGetMemoryFdKHR-device-parameter",
   6653           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6654         },
   6655         {
   6656           "vuid": "VUID-vkGetMemoryFdKHR-pGetFdInfo-parameter",
   6657           "text": " <code>pGetFdInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetFdInfoKHR</code> structure"
   6658         },
   6659         {
   6660           "vuid": "VUID-vkGetMemoryFdKHR-pFd-parameter",
   6661           "text": " <code>pFd</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>int</code> value"
   6662         }
   6663       ]
   6664     },
   6665     "VkMemoryGetFdInfoKHR": {
   6666       "(VK_KHR_external_memory_fd)": [
   6667         {
   6668           "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00671",
   6669           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfo\">VkExportMemoryAllocateInfo</a>::<code>handleTypes</code> when <code>memory</code> was created."
   6670         },
   6671         {
   6672           "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-00672",
   6673           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be defined as a POSIX file descriptor handle."
   6674         },
   6675         {
   6676           "vuid": "VUID-VkMemoryGetFdInfoKHR-sType-sType",
   6677           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR</code>"
   6678         },
   6679         {
   6680           "vuid": "VUID-VkMemoryGetFdInfoKHR-pNext-pNext",
   6681           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   6682         },
   6683         {
   6684           "vuid": "VUID-VkMemoryGetFdInfoKHR-memory-parameter",
   6685           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   6686         },
   6687         {
   6688           "vuid": "VUID-VkMemoryGetFdInfoKHR-handleType-parameter",
   6689           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   6690         }
   6691       ]
   6692     },
   6693     "vkGetMemoryFdPropertiesKHR": {
   6694       "(VK_KHR_external_memory_fd)": [
   6695         {
   6696           "vuid": "VUID-vkGetMemoryFdPropertiesKHR-fd-00673",
   6697           "text": " <code>fd</code> <strong class=\"purple\">must</strong> be an external memory handle created outside of the Vulkan API."
   6698         },
   6699         {
   6700           "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-00674",
   6701           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR</code>."
   6702         },
   6703         {
   6704           "vuid": "VUID-vkGetMemoryFdPropertiesKHR-device-parameter",
   6705           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6706         },
   6707         {
   6708           "vuid": "VUID-vkGetMemoryFdPropertiesKHR-handleType-parameter",
   6709           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   6710         },
   6711         {
   6712           "vuid": "VUID-vkGetMemoryFdPropertiesKHR-pMemoryFdProperties-parameter",
   6713           "text": " <code>pMemoryFdProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryFdPropertiesKHR</code> structure"
   6714         }
   6715       ]
   6716     },
   6717     "VkMemoryFdPropertiesKHR": {
   6718       "(VK_KHR_external_memory_fd)": [
   6719         {
   6720           "vuid": "VUID-VkMemoryFdPropertiesKHR-sType-sType",
   6721           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR</code>"
   6722         },
   6723         {
   6724           "vuid": "VUID-VkMemoryFdPropertiesKHR-pNext-pNext",
   6725           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   6726         }
   6727       ]
   6728     },
   6729     "VkImportMemoryHostPointerInfoEXT": {
   6730       "(VK_EXT_external_memory_host)": [
   6731         {
   6732           "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01747",
   6733           "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be supported for import, as reported in <a href=\"#VkExternalMemoryPropertiesKHR\">VkExternalMemoryPropertiesKHR</a>"
   6734         },
   6735         {
   6736           "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01748",
   6737           "text": " If <code>handleType</code> is not <code>0</code>, it <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
   6738         },
   6739         {
   6740           "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-pHostPointer-01749",
   6741           "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
   6742         },
   6743         {
   6744           "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01750",
   6745           "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
   6746         },
   6747         {
   6748           "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-01751",
   6749           "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to <code>allocationSize</code> number of bytes of host mapped foreign memory, where <code>allocationSize</code> is the member of the <code>VkMemoryAllocateInfo</code> structure this structure is chained to"
   6750         },
   6751         {
   6752           "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-sType-sType",
   6753           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT</code>"
   6754         },
   6755         {
   6756           "vuid": "VUID-VkImportMemoryHostPointerInfoEXT-handleType-parameter",
   6757           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   6758         }
   6759       ]
   6760     },
   6761     "vkGetMemoryHostPointerPropertiesEXT": {
   6762       "(VK_EXT_external_memory_host)": [
   6763         {
   6764           "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01752",
   6765           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code> or <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>"
   6766         },
   6767         {
   6768           "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pHostPointer-01753",
   6769           "text": " <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer aligned to an integer multiple of <code>VkPhysicalDeviceExternalMemoryHostPropertiesEXT</code>::<code>minImportedHostPointerAlignment</code>"
   6770         },
   6771         {
   6772           "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01754",
   6773           "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host memory"
   6774         },
   6775         {
   6776           "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-01755",
   6777           "text": " If <code>handleType</code> is <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT</code>, <code>pHostPointer</code> <strong class=\"purple\">must</strong> be a pointer to host mapped foreign memory"
   6778         },
   6779         {
   6780           "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-device-parameter",
   6781           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6782         },
   6783         {
   6784           "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-handleType-parameter",
   6785           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   6786         },
   6787         {
   6788           "vuid": "VUID-vkGetMemoryHostPointerPropertiesEXT-pMemoryHostPointerProperties-parameter",
   6789           "text": " <code>pMemoryHostPointerProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryHostPointerPropertiesEXT</code> structure"
   6790         }
   6791       ]
   6792     },
   6793     "VkMemoryHostPointerPropertiesEXT": {
   6794       "(VK_EXT_external_memory_host)": [
   6795         {
   6796           "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-sType-sType",
   6797           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT</code>"
   6798         },
   6799         {
   6800           "vuid": "VUID-VkMemoryHostPointerPropertiesEXT-pNext-pNext",
   6801           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   6802         }
   6803       ]
   6804     },
   6805     "VkImportAndroidHardwareBufferInfoANDROID": {
   6806       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   6807         {
   6808           "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01880",
   6809           "text": " If <code>buffer</code> is not <code>NULL</code>, Android hardware buffers <strong class=\"purple\">must</strong> be supported for import, as reported by <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a> or <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>."
   6810         },
   6811         {
   6812           "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-01881",
   6813           "text": " If <code>buffer</code> is not <code>NULL</code>, it <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with <code>AHardwareBuffer_Desc</code>::<code>format</code> and <code>AHardwareBuffer_Desc</code>::<code>usage</code> compatible with Vulkan as described in <a href=\"#memory-external-android-hardware-buffer\">Android Hardware Buffers</a>."
   6814         },
   6815         {
   6816           "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-sType-sType",
   6817           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
   6818         },
   6819         {
   6820           "vuid": "VUID-VkImportAndroidHardwareBufferInfoANDROID-buffer-parameter",
   6821           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>AHardwareBuffer</code> value"
   6822         }
   6823       ]
   6824     },
   6825     "vkGetMemoryAndroidHardwareBufferANDROID": {
   6826       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   6827         {
   6828           "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-device-parameter",
   6829           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6830         },
   6831         {
   6832           "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pInfo-parameter",
   6833           "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMemoryGetAndroidHardwareBufferInfoANDROID</code> structure"
   6834         },
   6835         {
   6836           "vuid": "VUID-vkGetMemoryAndroidHardwareBufferANDROID-pBuffer-parameter",
   6837           "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid pointer to a <code>AHardwareBuffer</code> value"
   6838         }
   6839       ]
   6840     },
   6841     "VkMemoryGetAndroidHardwareBufferInfoANDROID": {
   6842       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   6843         {
   6844           "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-handleTypes-01882",
   6845           "text": " <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> <strong class=\"purple\">must</strong> have been included in <a href=\"#VkExportMemoryAllocateInfoKHR\">VkExportMemoryAllocateInfoKHR</a>::<code>handleTypes</code> when <code>memory</code> was created."
   6846         },
   6847         {
   6848           "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-01883",
   6849           "text": " If the <code>pNext</code> chain of the <a href=\"#VkMemoryAllocateInfo\">VkMemoryAllocateInfo</a> used to allocate <code>memory</code> included a <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> with non-<code>NULL</code> <code>image</code> member, then that <code>image</code> <strong class=\"purple\">must</strong> already be bound to <code>memory</code>."
   6850         },
   6851         {
   6852           "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-sType-sType",
   6853           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID</code>"
   6854         },
   6855         {
   6856           "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-pNext-pNext",
   6857           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   6858         },
   6859         {
   6860           "vuid": "VUID-VkMemoryGetAndroidHardwareBufferInfoANDROID-memory-parameter",
   6861           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   6862         }
   6863       ]
   6864     },
   6865     "vkGetAndroidHardwareBufferPropertiesANDROID": {
   6866       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   6867         {
   6868           "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-01884",
   6869           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid Android hardware buffer object with at least one of the <code>AHARDWAREBUFFER_USAGE_GPU_</code>* flags in its <code>AHardwareBuffer_Desc</code>::<code>usage</code>"
   6870         },
   6871         {
   6872           "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-device-parameter",
   6873           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6874         },
   6875         {
   6876           "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-buffer-parameter",
   6877           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>AHardwareBuffer</code> value"
   6878         },
   6879         {
   6880           "vuid": "VUID-vkGetAndroidHardwareBufferPropertiesANDROID-pProperties-parameter",
   6881           "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAndroidHardwareBufferPropertiesANDROID</code> structure"
   6882         }
   6883       ]
   6884     },
   6885     "VkAndroidHardwareBufferPropertiesANDROID": {
   6886       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   6887         {
   6888           "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-sType-sType",
   6889           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID</code>"
   6890         },
   6891         {
   6892           "vuid": "VUID-VkAndroidHardwareBufferPropertiesANDROID-pNext-pNext",
   6893           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a>"
   6894         }
   6895       ]
   6896     },
   6897     "VkAndroidHardwareBufferFormatPropertiesANDROID": {
   6898       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   6899         {
   6900           "vuid": "VUID-VkAndroidHardwareBufferFormatPropertiesANDROID-sType-sType",
   6901           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID</code>"
   6902         }
   6903       ]
   6904     },
   6905     "VkExportMemoryAllocateInfoNV": {
   6906       "(VK_NV_external_memory)": [
   6907         {
   6908           "vuid": "VUID-VkExportMemoryAllocateInfoNV-sType-sType",
   6909           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV</code>"
   6910         },
   6911         {
   6912           "vuid": "VUID-VkExportMemoryAllocateInfoNV-handleTypes-parameter",
   6913           "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
   6914         }
   6915       ]
   6916     },
   6917     "VkExportMemoryWin32HandleInfoNV": {
   6918       "(VK_NV_external_memory_win32)": [
   6919         {
   6920           "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-sType-sType",
   6921           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
   6922         },
   6923         {
   6924           "vuid": "VUID-VkExportMemoryWin32HandleInfoNV-pAttributes-parameter",
   6925           "text": " If <code>pAttributes</code> is not <code>NULL</code>, <code>pAttributes</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>SECURITY_ATTRIBUTES</code> value"
   6926         }
   6927       ]
   6928     },
   6929     "VkImportMemoryWin32HandleInfoNV": {
   6930       "(VK_NV_external_memory_win32)": [
   6931         {
   6932           "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-01327",
   6933           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not have more than one bit set."
   6934         },
   6935         {
   6936           "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handle-01328",
   6937           "text": " <code>handle</code> <strong class=\"purple\">must</strong> be a valid handle to memory, obtained as specified by <code>handleType</code>."
   6938         },
   6939         {
   6940           "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-sType-sType",
   6941           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV</code>"
   6942         },
   6943         {
   6944           "vuid": "VUID-VkImportMemoryWin32HandleInfoNV-handleType-parameter",
   6945           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
   6946         }
   6947       ]
   6948     },
   6949     "vkGetMemoryWin32HandleNV": {
   6950       "(VK_NV_external_memory_win32)": [
   6951         {
   6952           "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-01326",
   6953           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a flag specified in <a href=\"#VkExportMemoryAllocateInfoNV\">VkExportMemoryAllocateInfoNV</a>::<code>handleTypes</code> when allocating <code>memory</code>"
   6954         },
   6955         {
   6956           "vuid": "VUID-vkGetMemoryWin32HandleNV-device-parameter",
   6957           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   6958         },
   6959         {
   6960           "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parameter",
   6961           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   6962         },
   6963         {
   6964           "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-parameter",
   6965           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
   6966         },
   6967         {
   6968           "vuid": "VUID-vkGetMemoryWin32HandleNV-handleType-requiredbitmask",
   6969           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   6970         },
   6971         {
   6972           "vuid": "VUID-vkGetMemoryWin32HandleNV-pHandle-parameter",
   6973           "text": " <code>pHandle</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>HANDLE</code> value"
   6974         },
   6975         {
   6976           "vuid": "VUID-vkGetMemoryWin32HandleNV-memory-parent",
   6977           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   6978         }
   6979       ]
   6980     },
   6981     "VkMemoryAllocateFlagsInfo": {
   6982       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   6983         {
   6984           "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00675",
   6985           "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask."
   6986         },
   6987         {
   6988           "vuid": "VUID-VkMemoryAllocateFlagsInfo-deviceMask-00676",
   6989           "text": " If <code>VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT</code> is set, <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
   6990         },
   6991         {
   6992           "vuid": "VUID-VkMemoryAllocateFlagsInfo-sType-sType",
   6993           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO</code>"
   6994         },
   6995         {
   6996           "vuid": "VUID-VkMemoryAllocateFlagsInfo-flags-parameter",
   6997           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkMemoryAllocateFlagBits\">VkMemoryAllocateFlagBits</a> values"
   6998         }
   6999       ]
   7000     },
   7001     "vkFreeMemory": {
   7002       "core": [
   7003         {
   7004           "vuid": "VUID-vkFreeMemory-memory-00677",
   7005           "text": " All submitted commands that refer to <code>memory</code> (via images or buffers) <strong class=\"purple\">must</strong> have completed execution"
   7006         },
   7007         {
   7008           "vuid": "VUID-vkFreeMemory-device-parameter",
   7009           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7010         },
   7011         {
   7012           "vuid": "VUID-vkFreeMemory-memory-parameter",
   7013           "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   7014         },
   7015         {
   7016           "vuid": "VUID-vkFreeMemory-pAllocator-parameter",
   7017           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   7018         },
   7019         {
   7020           "vuid": "VUID-vkFreeMemory-memory-parent",
   7021           "text": " If <code>memory</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   7022         }
   7023       ]
   7024     },
   7025     "vkMapMemory": {
   7026       "core": [
   7027         {
   7028           "vuid": "VUID-vkMapMemory-memory-00678",
   7029           "text": " <code>memory</code> <strong class=\"purple\">must</strong> not be currently host mapped"
   7030         },
   7031         {
   7032           "vuid": "VUID-vkMapMemory-offset-00679",
   7033           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
   7034         },
   7035         {
   7036           "vuid": "VUID-vkMapMemory-size-00680",
   7037           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   7038         },
   7039         {
   7040           "vuid": "VUID-vkMapMemory-size-00681",
   7041           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the <code>memory</code> minus <code>offset</code>"
   7042         },
   7043         {
   7044           "vuid": "VUID-vkMapMemory-memory-00682",
   7045           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT</code>"
   7046         },
   7047         {
   7048           "vuid": "VUID-vkMapMemory-device-parameter",
   7049           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7050         },
   7051         {
   7052           "vuid": "VUID-vkMapMemory-memory-parameter",
   7053           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   7054         },
   7055         {
   7056           "vuid": "VUID-vkMapMemory-flags-zerobitmask",
   7057           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   7058         },
   7059         {
   7060           "vuid": "VUID-vkMapMemory-ppData-parameter",
   7061           "text": " <code>ppData</code> <strong class=\"purple\">must</strong> be a valid pointer to a pointer value"
   7062         },
   7063         {
   7064           "vuid": "VUID-vkMapMemory-memory-parent",
   7065           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   7066         }
   7067       ],
   7068       "(VK_KHR_device_group)": [
   7069         {
   7070           "vuid": "VUID-vkMapMemory-memory-00683",
   7071           "text": " <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated with multiple instances."
   7072         }
   7073       ]
   7074     },
   7075     "vkFlushMappedMemoryRanges": {
   7076       "core": [
   7077         {
   7078           "vuid": "VUID-vkFlushMappedMemoryRanges-device-parameter",
   7079           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7080         },
   7081         {
   7082           "vuid": "VUID-vkFlushMappedMemoryRanges-pMemoryRanges-parameter",
   7083           "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures"
   7084         },
   7085         {
   7086           "vuid": "VUID-vkFlushMappedMemoryRanges-memoryRangeCount-arraylength",
   7087           "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   7088         }
   7089       ]
   7090     },
   7091     "vkInvalidateMappedMemoryRanges": {
   7092       "core": [
   7093         {
   7094           "vuid": "VUID-vkInvalidateMappedMemoryRanges-device-parameter",
   7095           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7096         },
   7097         {
   7098           "vuid": "VUID-vkInvalidateMappedMemoryRanges-pMemoryRanges-parameter",
   7099           "text": " <code>pMemoryRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>memoryRangeCount</code> valid <code>VkMappedMemoryRange</code> structures"
   7100         },
   7101         {
   7102           "vuid": "VUID-vkInvalidateMappedMemoryRanges-memoryRangeCount-arraylength",
   7103           "text": " <code>memoryRangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   7104         }
   7105       ]
   7106     },
   7107     "VkMappedMemoryRange": {
   7108       "core": [
   7109         {
   7110           "vuid": "VUID-VkMappedMemoryRange-memory-00684",
   7111           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
   7112         },
   7113         {
   7114           "vuid": "VUID-VkMappedMemoryRange-size-00685",
   7115           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> and <code>size</code> <strong class=\"purple\">must</strong> specify a range contained within the currently mapped range of <code>memory</code>"
   7116         },
   7117         {
   7118           "vuid": "VUID-VkMappedMemoryRange-size-00686",
   7119           "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, <code>offset</code> <strong class=\"purple\">must</strong> be within the currently mapped range of <code>memory</code>"
   7120         },
   7121         {
   7122           "vuid": "VUID-VkMappedMemoryRange-size-01389",
   7123           "text": " If <code>size</code> is equal to <code>VK_WHOLE_SIZE</code>, the end of the current mapping of <code>memory</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code> bytes from the beginning of the memory object."
   7124         },
   7125         {
   7126           "vuid": "VUID-VkMappedMemoryRange-offset-00687",
   7127           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>"
   7128         },
   7129         {
   7130           "vuid": "VUID-VkMappedMemoryRange-size-01390",
   7131           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> either be a multiple of <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>nonCoherentAtomSize</code>, or <code>offset</code> plus <code>size</code> <strong class=\"purple\">must</strong> equal the size of <code>memory</code>."
   7132         },
   7133         {
   7134           "vuid": "VUID-VkMappedMemoryRange-sType-sType",
   7135           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE</code>"
   7136         },
   7137         {
   7138           "vuid": "VUID-VkMappedMemoryRange-pNext-pNext",
   7139           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   7140         },
   7141         {
   7142           "vuid": "VUID-VkMappedMemoryRange-memory-parameter",
   7143           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   7144         }
   7145       ]
   7146     },
   7147     "vkUnmapMemory": {
   7148       "core": [
   7149         {
   7150           "vuid": "VUID-vkUnmapMemory-memory-00689",
   7151           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be currently host mapped"
   7152         },
   7153         {
   7154           "vuid": "VUID-vkUnmapMemory-device-parameter",
   7155           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7156         },
   7157         {
   7158           "vuid": "VUID-vkUnmapMemory-memory-parameter",
   7159           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   7160         },
   7161         {
   7162           "vuid": "VUID-vkUnmapMemory-memory-parent",
   7163           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   7164         }
   7165       ]
   7166     },
   7167     "vkGetDeviceMemoryCommitment": {
   7168       "core": [
   7169         {
   7170           "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-00690",
   7171           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code>"
   7172         },
   7173         {
   7174           "vuid": "VUID-vkGetDeviceMemoryCommitment-device-parameter",
   7175           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7176         },
   7177         {
   7178           "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parameter",
   7179           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   7180         },
   7181         {
   7182           "vuid": "VUID-vkGetDeviceMemoryCommitment-pCommittedMemoryInBytes-parameter",
   7183           "text": " <code>pCommittedMemoryInBytes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceSize</code> value"
   7184         },
   7185         {
   7186           "vuid": "VUID-vkGetDeviceMemoryCommitment-memory-parent",
   7187           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   7188         }
   7189       ]
   7190     },
   7191     "vkGetDeviceGroupPeerMemoryFeatures": {
   7192       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   7193         {
   7194           "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-heapIndex-00691",
   7195           "text": " <code>heapIndex</code> <strong class=\"purple\">must</strong> be less than <code>memoryHeapCount</code>"
   7196         },
   7197         {
   7198           "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00692",
   7199           "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
   7200         },
   7201         {
   7202           "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-remoteDeviceIndex-00693",
   7203           "text": " <code>remoteDeviceIndex</code> <strong class=\"purple\">must</strong> be a valid device index"
   7204         },
   7205         {
   7206           "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-localDeviceIndex-00694",
   7207           "text": " <code>localDeviceIndex</code> <strong class=\"purple\">must</strong> not equal <code>remoteDeviceIndex</code>"
   7208         },
   7209         {
   7210           "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-device-parameter",
   7211           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7212         },
   7213         {
   7214           "vuid": "VUID-vkGetDeviceGroupPeerMemoryFeatures-pPeerMemoryFeatures-parameter",
   7215           "text": " <code>pPeerMemoryFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkPeerMemoryFeatureFlags\">VkPeerMemoryFeatureFlags</a> value"
   7216         }
   7217       ]
   7218     },
   7219     "vkCreateBuffer": {
   7220       "core": [
   7221         {
   7222           "vuid": "VUID-vkCreateBuffer-flags-00911",
   7223           "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkBuffer</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
   7224         },
   7225         {
   7226           "vuid": "VUID-vkCreateBuffer-device-parameter",
   7227           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7228         },
   7229         {
   7230           "vuid": "VUID-vkCreateBuffer-pCreateInfo-parameter",
   7231           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferCreateInfo</code> structure"
   7232         },
   7233         {
   7234           "vuid": "VUID-vkCreateBuffer-pAllocator-parameter",
   7235           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   7236         },
   7237         {
   7238           "vuid": "VUID-vkCreateBuffer-pBuffer-parameter",
   7239           "text": " <code>pBuffer</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBuffer</code> handle"
   7240         }
   7241       ]
   7242     },
   7243     "VkBufferCreateInfo": {
   7244       "core": [
   7245         {
   7246           "vuid": "VUID-VkBufferCreateInfo-size-00912",
   7247           "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   7248         },
   7249         {
   7250           "vuid": "VUID-VkBufferCreateInfo-sharingMode-00913",
   7251           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
   7252         },
   7253         {
   7254           "vuid": "VUID-VkBufferCreateInfo-sharingMode-00914",
   7255           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
   7256         },
   7257         {
   7258           "vuid": "VUID-VkBufferCreateInfo-flags-00915",
   7259           "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
   7260         },
   7261         {
   7262           "vuid": "VUID-VkBufferCreateInfo-flags-00916",
   7263           "text": " If the <a href=\"#features-sparseResidencyBuffer\">sparse buffer residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>"
   7264         },
   7265         {
   7266           "vuid": "VUID-VkBufferCreateInfo-flags-00917",
   7267           "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
   7268         },
   7269         {
   7270           "vuid": "VUID-VkBufferCreateInfo-flags-00918",
   7271           "text": " If <code>flags</code> contains <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>"
   7272         },
   7273         {
   7274           "vuid": "VUID-VkBufferCreateInfo-sType-sType",
   7275           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO</code>"
   7276         },
   7277         {
   7278           "vuid": "VUID-VkBufferCreateInfo-pNext-pNext",
   7279           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>, <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, or <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>"
   7280         },
   7281         {
   7282           "vuid": "VUID-VkBufferCreateInfo-sType-unique",
   7283           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   7284         },
   7285         {
   7286           "vuid": "VUID-VkBufferCreateInfo-flags-parameter",
   7287           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
   7288         },
   7289         {
   7290           "vuid": "VUID-VkBufferCreateInfo-usage-parameter",
   7291           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
   7292         },
   7293         {
   7294           "vuid": "VUID-VkBufferCreateInfo-usage-requiredbitmask",
   7295           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   7296         },
   7297         {
   7298           "vuid": "VUID-VkBufferCreateInfo-sharingMode-parameter",
   7299           "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
   7300         }
   7301       ],
   7302       "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   7303         {
   7304           "vuid": "VUID-VkBufferCreateInfo-sharingMode-01391",
   7305           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
   7306         }
   7307       ],
   7308       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   7309         {
   7310           "vuid": "VUID-VkBufferCreateInfo-sharingMode-01419",
   7311           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
   7312         }
   7313       ],
   7314       "(VK_VERSION_1_1,VK_KHR_external_memory)": [
   7315         {
   7316           "vuid": "VUID-VkBufferCreateInfo-pNext-00920",
   7317           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalBufferProperties\">VkExternalBufferProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalBufferProperties\">vkGetPhysicalDeviceExternalBufferProperties</a> with <code>pExternalBufferInfo</code>-&gt;<code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryBufferCreateInfo\">VkExternalMemoryBufferCreateInfo</a>::<code>handleTypes</code>"
   7318         }
   7319       ],
   7320       "(VK_VERSION_1_1)": [
   7321         {
   7322           "vuid": "VUID-VkBufferCreateInfo-flags-01887",
   7323           "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_BUFFER_CREATE_PROTECTED_BIT</code>"
   7324         },
   7325         {
   7326           "vuid": "VUID-VkBufferCreateInfo-None-01888",
   7327           "text": " If any of the bits <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set"
   7328         }
   7329       ],
   7330       "(VK_NV_dedicated_allocation)": [
   7331         {
   7332           "vuid": "VUID-VkBufferCreateInfo-pNext-01571",
   7333           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>, and the <code>dedicatedAllocation</code> member of the chained structure is <code>VK_TRUE</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_BUFFER_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_BUFFER_CREATE_SPARSE_ALIASED_BIT</code>"
   7334         }
   7335       ],
   7336       "(VK_EXT_buffer_device_address)": [
   7337         {
   7338           "vuid": "VUID-VkBufferCreateInfo-deviceAddress-02604",
   7339           "text": " If <a href=\"#VkBufferDeviceAddressCreateInfoEXT\">VkBufferDeviceAddressCreateInfoEXT</a>::<code>deviceAddress</code> is not zero, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>"
   7340         },
   7341         {
   7342           "vuid": "VUID-VkBufferCreateInfo-flags-02605",
   7343           "text": " If <code>flags</code> includes <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code>, the <a href=\"#features-bufferDeviceAddressCaptureReplay\">bufferDeviceAddressCaptureReplay</a> feature <strong class=\"purple\">must</strong> be enabled"
   7344         },
   7345         {
   7346           "vuid": "VUID-VkBufferCreateInfo-usage-02606",
   7347           "text": " If <code>usage</code> includes <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT</code>, the <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
   7348         }
   7349       ]
   7350     },
   7351     "VkDedicatedAllocationBufferCreateInfoNV": {
   7352       "(VK_NV_dedicated_allocation)": [
   7353         {
   7354           "vuid": "VUID-VkDedicatedAllocationBufferCreateInfoNV-sType-sType",
   7355           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV</code>"
   7356         }
   7357       ]
   7358     },
   7359     "VkExternalMemoryBufferCreateInfo": {
   7360       "(VK_VERSION_1_1,VK_KHR_external_memory)": [
   7361         {
   7362           "vuid": "VUID-VkExternalMemoryBufferCreateInfo-sType-sType",
   7363           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO</code>"
   7364         },
   7365         {
   7366           "vuid": "VUID-VkExternalMemoryBufferCreateInfo-handleTypes-parameter",
   7367           "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
   7368         }
   7369       ]
   7370     },
   7371     "VkBufferDeviceAddressCreateInfoEXT": {
   7372       "(VK_EXT_buffer_device_address)": [
   7373         {
   7374           "vuid": "VUID-VkBufferDeviceAddressCreateInfoEXT-sType-sType",
   7375           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT</code>"
   7376         }
   7377       ]
   7378     },
   7379     "vkDestroyBuffer": {
   7380       "core": [
   7381         {
   7382           "vuid": "VUID-vkDestroyBuffer-buffer-00922",
   7383           "text": " All submitted commands that refer to <code>buffer</code>, either directly or via a <code>VkBufferView</code>, <strong class=\"purple\">must</strong> have completed execution"
   7384         },
   7385         {
   7386           "vuid": "VUID-vkDestroyBuffer-buffer-00923",
   7387           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   7388         },
   7389         {
   7390           "vuid": "VUID-vkDestroyBuffer-buffer-00924",
   7391           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>buffer</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   7392         },
   7393         {
   7394           "vuid": "VUID-vkDestroyBuffer-device-parameter",
   7395           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7396         },
   7397         {
   7398           "vuid": "VUID-vkDestroyBuffer-buffer-parameter",
   7399           "text": " If <code>buffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   7400         },
   7401         {
   7402           "vuid": "VUID-vkDestroyBuffer-pAllocator-parameter",
   7403           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   7404         },
   7405         {
   7406           "vuid": "VUID-vkDestroyBuffer-buffer-parent",
   7407           "text": " If <code>buffer</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   7408         }
   7409       ]
   7410     },
   7411     "vkCreateBufferView": {
   7412       "core": [
   7413         {
   7414           "vuid": "VUID-vkCreateBufferView-device-parameter",
   7415           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7416         },
   7417         {
   7418           "vuid": "VUID-vkCreateBufferView-pCreateInfo-parameter",
   7419           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferViewCreateInfo</code> structure"
   7420         },
   7421         {
   7422           "vuid": "VUID-vkCreateBufferView-pAllocator-parameter",
   7423           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   7424         },
   7425         {
   7426           "vuid": "VUID-vkCreateBufferView-pView-parameter",
   7427           "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBufferView</code> handle"
   7428         }
   7429       ]
   7430     },
   7431     "VkBufferViewCreateInfo": {
   7432       "core": [
   7433         {
   7434           "vuid": "VUID-VkBufferViewCreateInfo-offset-00925",
   7435           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
   7436         },
   7437         {
   7438           "vuid": "VUID-VkBufferViewCreateInfo-offset-00926",
   7439           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minTexelBufferOffsetAlignment</code>"
   7440         },
   7441         {
   7442           "vuid": "VUID-VkBufferViewCreateInfo-range-00928",
   7443           "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   7444         },
   7445         {
   7446           "vuid": "VUID-VkBufferViewCreateInfo-range-00929",
   7447           "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be an integer multiple of the texel block size of <code>format</code>"
   7448         },
   7449         {
   7450           "vuid": "VUID-VkBufferViewCreateInfo-range-00930",
   7451           "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> divided by the texel block size of <code>format</code>, multiplied by the number of texels per texel block for that format (as defined in the <a href=\"#formats-compatibility\">Compatible Formats</a> table), <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTexelBufferElements</code>"
   7452         },
   7453         {
   7454           "vuid": "VUID-VkBufferViewCreateInfo-offset-00931",
   7455           "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, the sum of <code>offset</code> and <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   7456         },
   7457         {
   7458           "vuid": "VUID-VkBufferViewCreateInfo-buffer-00932",
   7459           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> or <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>"
   7460         },
   7461         {
   7462           "vuid": "VUID-VkBufferViewCreateInfo-buffer-00933",
   7463           "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for uniform texel buffers, as specified by the <code>VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
   7464         },
   7465         {
   7466           "vuid": "VUID-VkBufferViewCreateInfo-buffer-00934",
   7467           "text": " If <code>buffer</code> was created with <code>usage</code> containing <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be supported for storage texel buffers, as specified by the <code>VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
   7468         },
   7469         {
   7470           "vuid": "VUID-VkBufferViewCreateInfo-buffer-00935",
   7471           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   7472         },
   7473         {
   7474           "vuid": "VUID-VkBufferViewCreateInfo-sType-sType",
   7475           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO</code>"
   7476         },
   7477         {
   7478           "vuid": "VUID-VkBufferViewCreateInfo-pNext-pNext",
   7479           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   7480         },
   7481         {
   7482           "vuid": "VUID-VkBufferViewCreateInfo-flags-zerobitmask",
   7483           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   7484         },
   7485         {
   7486           "vuid": "VUID-VkBufferViewCreateInfo-buffer-parameter",
   7487           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   7488         },
   7489         {
   7490           "vuid": "VUID-VkBufferViewCreateInfo-format-parameter",
   7491           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   7492         }
   7493       ]
   7494     },
   7495     "vkDestroyBufferView": {
   7496       "core": [
   7497         {
   7498           "vuid": "VUID-vkDestroyBufferView-bufferView-00936",
   7499           "text": " All submitted commands that refer to <code>bufferView</code> <strong class=\"purple\">must</strong> have completed execution"
   7500         },
   7501         {
   7502           "vuid": "VUID-vkDestroyBufferView-bufferView-00937",
   7503           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   7504         },
   7505         {
   7506           "vuid": "VUID-vkDestroyBufferView-bufferView-00938",
   7507           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>bufferView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   7508         },
   7509         {
   7510           "vuid": "VUID-vkDestroyBufferView-device-parameter",
   7511           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7512         },
   7513         {
   7514           "vuid": "VUID-vkDestroyBufferView-bufferView-parameter",
   7515           "text": " If <code>bufferView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>bufferView</code> <strong class=\"purple\">must</strong> be a valid <code>VkBufferView</code> handle"
   7516         },
   7517         {
   7518           "vuid": "VUID-vkDestroyBufferView-pAllocator-parameter",
   7519           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   7520         },
   7521         {
   7522           "vuid": "VUID-vkDestroyBufferView-bufferView-parent",
   7523           "text": " If <code>bufferView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   7524         }
   7525       ]
   7526     },
   7527     "vkCreateImage": {
   7528       "core": [
   7529         {
   7530           "vuid": "VUID-vkCreateImage-flags-00939",
   7531           "text": " If the <code>flags</code> member of <code>pCreateInfo</code> includes <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, creating this <code>VkImage</code> <strong class=\"purple\">must</strong> not cause the total required sparse memory for all currently valid sparse resources on the device to exceed <code>VkPhysicalDeviceLimits</code>::<code>sparseAddressSpaceSize</code>"
   7532         },
   7533         {
   7534           "vuid": "VUID-vkCreateImage-device-parameter",
   7535           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   7536         },
   7537         {
   7538           "vuid": "VUID-vkCreateImage-pCreateInfo-parameter",
   7539           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageCreateInfo</code> structure"
   7540         },
   7541         {
   7542           "vuid": "VUID-vkCreateImage-pAllocator-parameter",
   7543           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   7544         },
   7545         {
   7546           "vuid": "VUID-vkCreateImage-pImage-parameter",
   7547           "text": " <code>pImage</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImage</code> handle"
   7548         }
   7549       ]
   7550     },
   7551     "VkImageCreateInfo": {
   7552       "core": [
   7553         {
   7554           "vuid": "VUID-VkImageCreateInfo-imageCreateMaxMipLevels-02251",
   7555           "text": " Each of the following values (as described in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> not be undefined <code>imageCreateMaxMipLevels</code>, <code>imageCreateMaxArrayLayers</code>, <code>imageCreateMaxExtent</code>, and <code>imageCreateSampleCounts</code>."
   7556         },
   7557         {
   7558           "vuid": "VUID-VkImageCreateInfo-sharingMode-00941",
   7559           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
   7560         },
   7561         {
   7562           "vuid": "VUID-VkImageCreateInfo-sharingMode-00942",
   7563           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
   7564         },
   7565         {
   7566           "vuid": "VUID-VkImageCreateInfo-extent-00944",
   7567           "text": " <code>extent</code>::<code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
   7568         },
   7569         {
   7570           "vuid": "VUID-VkImageCreateInfo-extent-00945",
   7571           "text": " <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
   7572         },
   7573         {
   7574           "vuid": "VUID-VkImageCreateInfo-extent-00946",
   7575           "text": " <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>."
   7576         },
   7577         {
   7578           "vuid": "VUID-VkImageCreateInfo-mipLevels-00947",
   7579           "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   7580         },
   7581         {
   7582           "vuid": "VUID-VkImageCreateInfo-arrayLayers-00948",
   7583           "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   7584         },
   7585         {
   7586           "vuid": "VUID-VkImageCreateInfo-flags-00949",
   7587           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
   7588         },
   7589         {
   7590           "vuid": "VUID-VkImageCreateInfo-extent-02252",
   7591           "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.width</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
   7592         },
   7593         {
   7594           "vuid": "VUID-VkImageCreateInfo-extent-02253",
   7595           "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.height</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
   7596         },
   7597         {
   7598           "vuid": "VUID-VkImageCreateInfo-extent-02254",
   7599           "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxExtent.depth</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
   7600         },
   7601         {
   7602           "vuid": "VUID-VkImageCreateInfo-imageType-00954",
   7603           "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>extent.width</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be equal and <code>arrayLayers</code> <strong class=\"purple\">must</strong> be greater than or equal to 6"
   7604         },
   7605         {
   7606           "vuid": "VUID-VkImageCreateInfo-imageType-00956",
   7607           "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, both <code>extent.height</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   7608         },
   7609         {
   7610           "vuid": "VUID-VkImageCreateInfo-imageType-00957",
   7611           "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   7612         },
   7613         {
   7614           "vuid": "VUID-VkImageCreateInfo-mipLevels-00958",
   7615           "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>."
   7616         },
   7617         {
   7618           "vuid": "VUID-VkImageCreateInfo-mipLevels-02255",
   7619           "text": " <code>mipLevels</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxMipLevels</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
   7620         },
   7621         {
   7622           "vuid": "VUID-VkImageCreateInfo-arrayLayers-02256",
   7623           "text": " <code>arrayLayers</code> <strong class=\"purple\">must</strong> be less than or equal to <code>imageCreateMaxArrayLayers</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
   7624         },
   7625         {
   7626           "vuid": "VUID-VkImageCreateInfo-imageType-00961",
   7627           "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   7628         },
   7629         {
   7630           "vuid": "VUID-VkImageCreateInfo-samples-02257",
   7631           "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, then <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be equal to <code>1</code>, and <code>imageCreateMaybeLinear</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> be <code>false</code>,"
   7632         },
   7633         {
   7634           "vuid": "VUID-VkImageCreateInfo-usage-00963",
   7635           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set"
   7636         },
   7637         {
   7638           "vuid": "VUID-VkImageCreateInfo-usage-00964",
   7639           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
   7640         },
   7641         {
   7642           "vuid": "VUID-VkImageCreateInfo-usage-00965",
   7643           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
   7644         },
   7645         {
   7646           "vuid": "VUID-VkImageCreateInfo-usage-00966",
   7647           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> also contain at least one of <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>."
   7648         },
   7649         {
   7650           "vuid": "VUID-VkImageCreateInfo-samples-02258",
   7651           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>imageCreateSampleCounts</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>)."
   7652         },
   7653         {
   7654           "vuid": "VUID-VkImageCreateInfo-usage-00968",
   7655           "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, and <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>"
   7656         },
   7657         {
   7658           "vuid": "VUID-VkImageCreateInfo-flags-00969",
   7659           "text": " If the <a href=\"#features-sparseBinding\">sparse bindings</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>"
   7660         },
   7661         {
   7662           "vuid": "VUID-VkImageCreateInfo-flags-01924",
   7663           "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
   7664         },
   7665         {
   7666           "vuid": "VUID-VkImageCreateInfo-imageType-00970",
   7667           "text": " If <code>imageType</code> is <code>VK_IMAGE_TYPE_1D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
   7668         },
   7669         {
   7670           "vuid": "VUID-VkImageCreateInfo-imageType-00971",
   7671           "text": " If the <a href=\"#features-sparseResidencyImage2D\">sparse residency for 2D images</a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
   7672         },
   7673         {
   7674           "vuid": "VUID-VkImageCreateInfo-imageType-00972",
   7675           "text": " If the <a href=\"#features-sparseResidencyImage3D\">sparse residency for 3D images</a> feature is not enabled, and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
   7676         },
   7677         {
   7678           "vuid": "VUID-VkImageCreateInfo-imageType-00973",
   7679           "text": " If the <a href=\"#features-sparseResidency2Samples\">sparse residency for images with 2 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_2_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
   7680         },
   7681         {
   7682           "vuid": "VUID-VkImageCreateInfo-imageType-00974",
   7683           "text": " If the <a href=\"#features-sparseResidency4Samples\">sparse residency for images with 4 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_4_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
   7684         },
   7685         {
   7686           "vuid": "VUID-VkImageCreateInfo-imageType-00975",
   7687           "text": " If the <a href=\"#features-sparseResidency8Samples\">sparse residency for images with 8 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_8_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
   7688         },
   7689         {
   7690           "vuid": "VUID-VkImageCreateInfo-imageType-00976",
   7691           "text": " If the <a href=\"#features-sparseResidency16Samples\">sparse residency for images with 16 samples</a> feature is not enabled, <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, and <code>samples</code> is <code>VK_SAMPLE_COUNT_16_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>"
   7692         },
   7693         {
   7694           "vuid": "VUID-VkImageCreateInfo-flags-00987",
   7695           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code> or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>, it <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>"
   7696         },
   7697         {
   7698           "vuid": "VUID-VkImageCreateInfo-None-01925",
   7699           "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not also be set"
   7700         },
   7701         {
   7702           "vuid": "VUID-VkImageCreateInfo-initialLayout-00993",
   7703           "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_UNDEFINED</code> or <code>VK_IMAGE_LAYOUT_PREINITIALIZED</code>."
   7704         },
   7705         {
   7706           "vuid": "VUID-VkImageCreateInfo-sType-sType",
   7707           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO</code>"
   7708         },
   7709         {
   7710           "vuid": "VUID-VkImageCreateInfo-pNext-pNext",
   7711           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>, <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, or <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>"
   7712         },
   7713         {
   7714           "vuid": "VUID-VkImageCreateInfo-sType-unique",
   7715           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   7716         },
   7717         {
   7718           "vuid": "VUID-VkImageCreateInfo-flags-parameter",
   7719           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
   7720         },
   7721         {
   7722           "vuid": "VUID-VkImageCreateInfo-imageType-parameter",
   7723           "text": " <code>imageType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
   7724         },
   7725         {
   7726           "vuid": "VUID-VkImageCreateInfo-format-parameter",
   7727           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   7728         },
   7729         {
   7730           "vuid": "VUID-VkImageCreateInfo-samples-parameter",
   7731           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
   7732         },
   7733         {
   7734           "vuid": "VUID-VkImageCreateInfo-tiling-parameter",
   7735           "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
   7736         },
   7737         {
   7738           "vuid": "VUID-VkImageCreateInfo-usage-parameter",
   7739           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   7740         },
   7741         {
   7742           "vuid": "VUID-VkImageCreateInfo-usage-requiredbitmask",
   7743           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   7744         },
   7745         {
   7746           "vuid": "VUID-VkImageCreateInfo-sharingMode-parameter",
   7747           "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
   7748         },
   7749         {
   7750           "vuid": "VUID-VkImageCreateInfo-initialLayout-parameter",
   7751           "text": " <code>initialLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   7752         }
   7753       ],
   7754       "!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   7755         {
   7756           "vuid": "VUID-VkImageCreateInfo-sharingMode-01392",
   7757           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
   7758         }
   7759       ],
   7760       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   7761         {
   7762           "vuid": "VUID-VkImageCreateInfo-sharingMode-01420",
   7763           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
   7764         }
   7765       ],
   7766       "!(VK_ANDROID_external_memory_android_hardware_buffer)": [
   7767         {
   7768           "vuid": "VUID-VkImageCreateInfo-format-00943",
   7769           "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
   7770         }
   7771       ],
   7772       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   7773         {
   7774           "vuid": "VUID-VkImageCreateInfo-pNext-01974",
   7775           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, and its member <code>externalFormat</code> is non-zero the <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>."
   7776         },
   7777         {
   7778           "vuid": "VUID-VkImageCreateInfo-pNext-01975",
   7779           "text": " If the <code>pNext</code> chain does not contain an instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>, or does and its member <code>externalFormat</code> is <code>0</code> the <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>."
   7780         },
   7781         {
   7782           "vuid": "VUID-VkImageCreateInfo-pNext-02393",
   7783           "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>."
   7784         },
   7785         {
   7786           "vuid": "VUID-VkImageCreateInfo-pNext-02394",
   7787           "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a> structure whose <code>handleTypes</code> member includes <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> either be <code>1</code> or equal to the number of levels in the complete mipmap chain based on <span class=\"eq\"><code>extent.width</code></span>, <span class=\"eq\"><code>extent.height</code></span>, and <span class=\"eq\"><code>extent.depth</code></span>."
   7788         },
   7789         {
   7790           "vuid": "VUID-VkImageCreateInfo-pNext-02396",
   7791           "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>."
   7792         },
   7793         {
   7794           "vuid": "VUID-VkImageCreateInfo-pNext-02397",
   7795           "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>usage</code> <strong class=\"purple\">must</strong> not include any usages except <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>."
   7796         },
   7797         {
   7798           "vuid": "VUID-VkImageCreateInfo-pNext-02398",
   7799           "text": " If the <code>pNext</code> chain includes a <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a> structure whose <code>externalFormat</code> member is not <code>0</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>."
   7800         }
   7801       ],
   7802       "(VK_EXT_fragment_density_map)": [
   7803         {
   7804           "vuid": "VUID-VkImageCreateInfo-flags-02557",
   7805           "text": " If <code>flags</code> contains <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
   7806         },
   7807         {
   7808           "vuid": "VUID-VkImageCreateInfo-samples-02558",
   7809           "text": " If <code>samples</code> is not <code>VK_SAMPLE_COUNT_1_BIT</code>, <code>usage</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>"
   7810         },
   7811         {
   7812           "vuid": "VUID-VkImageCreateInfo-usage-02559",
   7813           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\rceil\\)"
   7814         },
   7815         {
   7816           "vuid": "VUID-VkImageCreateInfo-usage-02560",
   7817           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to \\(\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\rceil\\)"
   7818         },
   7819         {
   7820           "vuid": "VUID-VkImageCreateInfo-flags-02565",
   7821           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>"
   7822         },
   7823         {
   7824           "vuid": "VUID-VkImageCreateInfo-flags-02566",
   7825           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
   7826         },
   7827         {
   7828           "vuid": "VUID-VkImageCreateInfo-flags-02567",
   7829           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code>"
   7830         },
   7831         {
   7832           "vuid": "VUID-VkImageCreateInfo-flags-02568",
   7833           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>, <code>mipLevels</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   7834         }
   7835       ],
   7836       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   7837         {
   7838           "vuid": "VUID-VkImageCreateInfo-flags-00950",
   7839           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_3D</code>"
   7840         }
   7841       ],
   7842       "(VK_VERSION_1_1)": [
   7843         {
   7844           "vuid": "VUID-VkImageCreateInfo-flags-01890",
   7845           "text": " If the protected memory feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>."
   7846         },
   7847         {
   7848           "vuid": "VUID-VkImageCreateInfo-None-01891",
   7849           "text": " If any of the bits <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code> are set, <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> <strong class=\"purple\">must</strong> not also be set."
   7850         }
   7851       ],
   7852       "(VK_VERSION_1_1,VK_KHR_external_memory)+(VK_NV_external_memory)": [
   7853         {
   7854           "vuid": "VUID-VkImageCreateInfo-pNext-00988",
   7855           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, it <strong class=\"purple\">must</strong> not contain an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>."
   7856         }
   7857       ],
   7858       "(VK_VERSION_1_1,VK_KHR_external_memory)": [
   7859         {
   7860           "vuid": "VUID-VkImageCreateInfo-pNext-00990",
   7861           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> in the <code>pNext</code> chain, with a <code>handleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>::<code>handleTypes</code>"
   7862         }
   7863       ],
   7864       "(VK_NV_external_memory+VK_NV_external_memory_capabilities)": [
   7865         {
   7866           "vuid": "VUID-VkImageCreateInfo-pNext-00991",
   7867           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>, its <code>handleTypes</code> member <strong class=\"purple\">must</strong> only contain bits that are also in <a href=\"#VkExternalImageFormatPropertiesNV\">VkExternalImageFormatPropertiesNV</a>::<code>externalMemoryProperties.compatibleHandleTypes</code>, as returned by <a href=\"#vkGetPhysicalDeviceExternalImageFormatPropertiesNV\">vkGetPhysicalDeviceExternalImageFormatPropertiesNV</a> with <code>format</code>, <code>imageType</code>, <code>tiling</code>, <code>usage</code>, and <code>flags</code> equal to those in this structure, and with <code>externalHandleType</code> equal to any one of the handle types specified in <a href=\"#VkExternalMemoryImageCreateInfoNV\">VkExternalMemoryImageCreateInfoNV</a>::<code>handleTypes</code>"
   7868         }
   7869       ],
   7870       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   7871         {
   7872           "vuid": "VUID-VkImageCreateInfo-physicalDeviceCount-01421",
   7873           "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>"
   7874         },
   7875         {
   7876           "vuid": "VUID-VkImageCreateInfo-flags-02259",
   7877           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be one, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be one, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>. and <code>imageCreateMaybeLinear</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) <strong class=\"purple\">must</strong> be <code>false</code>."
   7878         }
   7879       ],
   7880       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   7881         {
   7882           "vuid": "VUID-VkImageCreateInfo-flags-01572",
   7883           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be a <a href=\"#appendix-compressedtex-bc\">block-compressed image format</a>, an <a href=\"#appendix-compressedtex-etc2\">ETC compressed image format</a>, or an <a href=\"#appendix-compressedtex-astc\">ASTC compressed image format</a>."
   7884         },
   7885         {
   7886           "vuid": "VUID-VkImageCreateInfo-flags-01573",
   7887           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> also contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>."
   7888         }
   7889       ],
   7890       "(VK_VERSION_1_1,VK_KHR_external_memory,VK_NV_external_memory)": [
   7891         {
   7892           "vuid": "VUID-VkImageCreateInfo-pNext-01443",
   7893           "text": "     If the <code>pNext</code> chain includes a ifdef::VK_VERSION_1_1,VK_KHR_external_memory[<a href=\"#VkExternalMemoryImageCreateInfo\">VkExternalMemoryImageCreateInfo</a>]"
   7894         }
   7895       ],
   7896       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   7897         {
   7898           "vuid": "VUID-VkImageCreateInfo-format-02561",
   7899           "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, then <code>mipLevels</code> <strong class=\"purple\">must</strong> be 1"
   7900         },
   7901         {
   7902           "vuid": "VUID-VkImageCreateInfo-format-02562",
   7903           "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>samples</code> must be <code>VK_SAMPLE_COUNT_1_BIT</code>"
   7904         },
   7905         {
   7906           "vuid": "VUID-VkImageCreateInfo-format-02563",
   7907           "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>"
   7908         },
   7909         {
   7910           "vuid": "VUID-VkImageCreateInfo-imageCreateFormatFeatures-02260",
   7911           "text": " If <code>format</code> is a <em>multi-planar</em> format, and if <code>imageCreateFormatFeatures</code> (as defined in <a href=\"#resources-image-creation-limits\">Image Creation Limits</a>) does not contain <code>VK_FORMAT_FEATURE_DISJOINT_BIT</code>, then <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>."
   7912         },
   7913         {
   7914           "vuid": "VUID-VkImageCreateInfo-format-01577",
   7915           "text": " If <code>format</code> is not a <em>multi-planar</em> format, and <code>flags</code> does not include <code>VK_IMAGE_CREATE_ALIAS_BIT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_DISJOINT_BIT</code>"
   7916         }
   7917       ],
   7918       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_ycbcr_image_arrays)": [
   7919         {
   7920           "vuid": "VUID-VkImageCreateInfo-format-02653",
   7921           "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, and the <code>ycbcrImageArrays</code> feature is not enabled, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1"
   7922         }
   7923       ],
   7924       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_ycbcr_image_arrays)": [
   7925         {
   7926           "vuid": "VUID-VkImageCreateInfo-format-02564",
   7927           "text": " If the image <code>format</code> is one of those listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>, <code>arrayLayers</code> <strong class=\"purple\">must</strong> be 1"
   7928         }
   7929       ],
   7930       "(VK_EXT_image_drm_format_modifier)": [
   7931         {
   7932           "vuid": "VUID-VkImageCreateInfo-tiling-02261",
   7933           "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain exactly one of <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>."
   7934         },
   7935         {
   7936           "vuid": "VUID-VkImageCreateInfo-pNext-02262",
   7937           "text": " If the <code>pNext</code> chain contains <a href=\"#VkImageDrmFormatModifierListCreateInfoEXT\">VkImageDrmFormatModifierListCreateInfoEXT</a> or <a href=\"#VkImageDrmFormatModifierExplicitCreateInfoEXT\">VkImageDrmFormatModifierExplicitCreateInfoEXT</a>, then <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>."
   7938         },
   7939         {
   7940           "vuid": "VUID-VkImageCreateInfo-tiling-02353",
   7941           "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with non-zero <code>viewFormatCount</code>."
   7942         }
   7943       ],
   7944       "(VK_EXT_sample_locations)": [
   7945         {
   7946           "vuid": "VUID-VkImageCreateInfo-flags-01533",
   7947           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> <code>format</code> <strong class=\"purple\">must</strong> be a depth or depth/stencil format"
   7948         }
   7949       ],
   7950       "(VK_EXT_separate_stencil_usage)": [
   7951         {
   7952           "vuid": "VUID-VkImageCreateInfo-format-02534",
   7953           "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, then its <code>stencilUsage</code> member <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code> if <code>usage</code> also includes it"
   7954         },
   7955         {
   7956           "vuid": "VUID-VkImageCreateInfo-format-02535",
   7957           "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, then its <code>stencilUsage</code> member <strong class=\"purple\">must</strong> only include <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code> if <code>usage</code> also includes it"
   7958         },
   7959         {
   7960           "vuid": "VUID-VkImageCreateInfo-Format-02536",
   7961           "text": " If <code>Format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferWidth</code>"
   7962         },
   7963         {
   7964           "vuid": "VUID-VkImageCreateInfo-format-02537",
   7965           "text": " If <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> member including <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>extent.height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxFramebufferHeight</code>"
   7966         },
   7967         {
   7968           "vuid": "VUID-VkImageCreateInfo-format-02538",
   7969           "text": " If the <a href=\"#features-shaderStorageImageMultisample\">multisampled storage images</a> feature is not enabled, <code>format</code> is a depth-stencil format and the <code>pNext</code> chain contains an instance of <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a> with its <code>stencilUsage</code> including <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>"
   7970         }
   7971       ],
   7972       "(VK_NV_corner_sampled_image)": [
   7973         {
   7974           "vuid": "VUID-VkImageCreateInfo-flags-02050",
   7975           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code> or <code>VK_IMAGE_TYPE_3D</code>"
   7976         },
   7977         {
   7978           "vuid": "VUID-VkImageCreateInfo-flags-02051",
   7979           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code>, it <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> and the <code>format</code> <strong class=\"purple\">must</strong> not be a depth/stencil format"
   7980         },
   7981         {
   7982           "vuid": "VUID-VkImageCreateInfo-flags-02052",
   7983           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_2D</code>, <code>extent</code>::<code>width</code> and <code>extent</code>::<code>height</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
   7984         },
   7985         {
   7986           "vuid": "VUID-VkImageCreateInfo-flags-02053",
   7987           "text": " If <code>flags</code> contains <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> and <code>imageType</code> is <code>VK_IMAGE_TYPE_3D</code>, <code>extent</code>::<code>width</code>, <code>extent</code>::<code>height</code>, and <code>extent</code>::<code>depth</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
   7988         }
   7989       ],
   7990       "(VK_NV_shading_rate_image)": [
   7991         {
   7992           "vuid": "VUID-VkImageCreateInfo-imageType-02082",
   7993           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>imageType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TYPE_2D</code>."
   7994         },
   7995         {
   7996           "vuid": "VUID-VkImageCreateInfo-samples-02083",
   7997           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>samples</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLE_COUNT_1_BIT</code>."
   7998         },
   7999         {
   8000           "vuid": "VUID-VkImageCreateInfo-tiling-02084",
   8001           "text": " If <code>usage</code> includes <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_OPTIMAL</code>."
   8002         }
   8003       ]
   8004     },
   8005     "VkImageStencilUsageCreateInfoEXT": {
   8006       "(VK_EXT_separate_stencil_usage)": [
   8007         {
   8008           "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-02539",
   8009           "text": " If <code>stencilUsage</code> includes <code>VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT</code>, then bits other than <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, and <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> <strong class=\"purple\">must</strong> not be set"
   8010         },
   8011         {
   8012           "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-sType-sType",
   8013           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT</code>"
   8014         },
   8015         {
   8016           "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-parameter",
   8017           "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   8018         },
   8019         {
   8020           "vuid": "VUID-VkImageStencilUsageCreateInfoEXT-stencilUsage-requiredbitmask",
   8021           "text": " <code>stencilUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   8022         }
   8023       ]
   8024     },
   8025     "VkDedicatedAllocationImageCreateInfoNV": {
   8026       "(VK_NV_dedicated_allocation)": [
   8027         {
   8028           "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-dedicatedAllocation-00994",
   8029           "text": " If <code>dedicatedAllocation</code> is <code>VK_TRUE</code>, <code>VkImageCreateInfo</code>::<code>flags</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
   8030         },
   8031         {
   8032           "vuid": "VUID-VkDedicatedAllocationImageCreateInfoNV-sType-sType",
   8033           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV</code>"
   8034         }
   8035       ]
   8036     },
   8037     "VkExternalMemoryImageCreateInfo": {
   8038       "(VK_VERSION_1_1,VK_KHR_external_memory)": [
   8039         {
   8040           "vuid": "VUID-VkExternalMemoryImageCreateInfo-sType-sType",
   8041           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO</code>"
   8042         },
   8043         {
   8044           "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-parameter",
   8045           "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> values"
   8046         },
   8047         {
   8048           "vuid": "VUID-VkExternalMemoryImageCreateInfo-handleTypes-requiredbitmask",
   8049           "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   8050         }
   8051       ]
   8052     },
   8053     "VkExternalMemoryImageCreateInfoNV": {
   8054       "(VK_NV_external_memory)": [
   8055         {
   8056           "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-sType-sType",
   8057           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV</code>"
   8058         },
   8059         {
   8060           "vuid": "VUID-VkExternalMemoryImageCreateInfoNV-handleTypes-parameter",
   8061           "text": " <code>handleTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
   8062         }
   8063       ]
   8064     },
   8065     "VkExternalFormatANDROID": {
   8066       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   8067         {
   8068           "vuid": "VUID-VkExternalFormatANDROID-externalFormat-01894",
   8069           "text": " <code>externalFormat</code> <strong class=\"purple\">must</strong> be <code>0</code> or a value returned in the <code>externalFormat</code> member of <a href=\"#VkAndroidHardwareBufferFormatPropertiesANDROID\">VkAndroidHardwareBufferFormatPropertiesANDROID</a> by an earlier call to <a href=\"#vkGetAndroidHardwareBufferPropertiesANDROID\">vkGetAndroidHardwareBufferPropertiesANDROID</a>"
   8070         },
   8071         {
   8072           "vuid": "VUID-VkExternalFormatANDROID-sType-sType",
   8073           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID</code>"
   8074         }
   8075       ]
   8076     },
   8077     "VkImageSwapchainCreateInfoKHR": {
   8078       "(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
   8079         {
   8080           "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-00995",
   8081           "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, the fields of <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> <strong class=\"purple\">must</strong> match the <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain"
   8082         },
   8083         {
   8084           "vuid": "VUID-VkImageSwapchainCreateInfoKHR-sType-sType",
   8085           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR</code>"
   8086         },
   8087         {
   8088           "vuid": "VUID-VkImageSwapchainCreateInfoKHR-swapchain-parameter",
   8089           "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   8090         }
   8091       ]
   8092     },
   8093     "VkImageFormatListCreateInfoKHR": {
   8094       "(VK_KHR_image_format_list)": [
   8095         {
   8096           "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01578",
   8097           "text": " If <code>viewFormatCount</code> is not <code>0</code>, all of the formats in the <code>pViewFormats</code> array <strong class=\"purple\">must</strong> be compatible with the format specified in the <code>format</code> field of <code>VkImageCreateInfo</code>, as described in the <a href=\"#formats-compatibility\">compatibility table</a>."
   8098         },
   8099         {
   8100           "vuid": "VUID-VkImageFormatListCreateInfoKHR-flags-01579",
   8101           "text": " If <code>VkImageCreateInfo</code>::<code>flags</code> does not contain <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, <code>viewFormatCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>."
   8102         },
   8103         {
   8104           "vuid": "VUID-VkImageFormatListCreateInfoKHR-viewFormatCount-01580",
   8105           "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>VkImageCreateInfo</code>::<code>format</code> <strong class=\"purple\">must</strong> be in <code>pViewFormats</code>."
   8106         },
   8107         {
   8108           "vuid": "VUID-VkImageFormatListCreateInfoKHR-sType-sType",
   8109           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR</code>"
   8110         },
   8111         {
   8112           "vuid": "VUID-VkImageFormatListCreateInfoKHR-pViewFormats-parameter",
   8113           "text": " If <code>viewFormatCount</code> is not <code>0</code>, <code>pViewFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewFormatCount</code> valid <a href=\"#VkFormat\">VkFormat</a> values"
   8114         }
   8115       ]
   8116     },
   8117     "VkImageDrmFormatModifierListCreateInfoEXT": {
   8118       "(VK_EXT_image_drm_format_modifier)": [
   8119         {
   8120           "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-02263",
   8121           "text": " Each <em>modifier</em> in <code>pDrmFormatModifiers</code> must be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
   8122         },
   8123         {
   8124           "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType",
   8125           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT</code>"
   8126         },
   8127         {
   8128           "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-pDrmFormatModifiers-parameter",
   8129           "text": " <code>pDrmFormatModifiers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierCount</code> <code>uint64_t</code> values"
   8130         },
   8131         {
   8132           "vuid": "VUID-VkImageDrmFormatModifierListCreateInfoEXT-drmFormatModifierCount-arraylength",
   8133           "text": " <code>drmFormatModifierCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   8134         }
   8135       ]
   8136     },
   8137     "VkImageDrmFormatModifierExplicitCreateInfoEXT": {
   8138       "(VK_EXT_image_drm_format_modifier)": [
   8139         {
   8140           "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifier-02264",
   8141           "text": " <code>drmFormatModifier</code> must be compatible with the parameters in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> and its <code>pNext</code> chain, as determined by querying <a href=\"#VkPhysicalDeviceImageFormatInfo2KHR\">VkPhysicalDeviceImageFormatInfo2KHR</a> extended with <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
   8142         },
   8143         {
   8144           "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-drmFormatModifierPlaneCount-02265",
   8145           "text": " <code>drmFormatModifierPlaneCount</code> <strong class=\"purple\">must</strong> be equal to the <a href=\"#VkDrmFormatModifierPropertiesEXT\">VkDrmFormatModifierPropertiesEXT</a>::<code>drmFormatModifierPlaneCount</code> associated with <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>format</code> and <code>drmFormatModifier</code>, as found by querying <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>."
   8146         },
   8147         {
   8148           "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-size-02267",
   8149           "text": " For each element of <code>pPlaneLayouts</code>, <code>size</code> <strong class=\"purple\">must</strong> be 0"
   8150         },
   8151         {
   8152           "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-arrayPitch-02268",
   8153           "text": " For each element of <code>pPlaneLayouts</code>, <code>arrayPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>arrayLayers</code> is 1."
   8154         },
   8155         {
   8156           "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-depthPitch-02269",
   8157           "text": " For each element of <code>pPlaneLayouts</code>, <code>depthPitch</code> <strong class=\"purple\">must</strong> be 0 if <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>extent</code>::<code>depth</code> is 1."
   8158         },
   8159         {
   8160           "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-sType-sType",
   8161           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT</code>"
   8162         },
   8163         {
   8164           "vuid": "VUID-VkImageDrmFormatModifierExplicitCreateInfoEXT-pPlaneLayouts-parameter",
   8165           "text": " If <code>drmFormatModifierPlaneCount</code> is not <code>0</code>, <code>pPlaneLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>drmFormatModifierPlaneCount</code> <code>VkSubresourceLayout</code> structures"
   8166         }
   8167       ]
   8168     },
   8169     "vkGetImageSubresourceLayout": {
   8170       "!(VK_EXT_image_drm_format_modifier)": [
   8171         {
   8172           "vuid": "VUID-vkGetImageSubresourceLayout-image-00996",
   8173           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code>"
   8174         }
   8175       ],
   8176       "(VK_EXT_image_drm_format_modifier)": [
   8177         {
   8178           "vuid": "VUID-vkGetImageSubresourceLayout-image-02270",
   8179           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>tiling</code> equal to <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>"
   8180         },
   8181         {
   8182           "vuid": "VUID-vkGetImageSubresourceLayout-tiling-02271",
   8183           "text": "  If the <code>tiling</code> of the <code>image</code> is  <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then the <code>aspectMask</code>  member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be  <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT and the index <em>i</em>  <strong class=\"purple\">must</strong> be less than the  <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a>  associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>."
   8184         }
   8185       ],
   8186       "core": [
   8187         {
   8188           "vuid": "VUID-vkGetImageSubresourceLayout-aspectMask-00997",
   8189           "text": " The <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
   8190         },
   8191         {
   8192           "vuid": "VUID-vkGetImageSubresourceLayout-mipLevel-01716",
   8193           "text": " The <code>mipLevel</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8194         },
   8195         {
   8196           "vuid": "VUID-vkGetImageSubresourceLayout-arrayLayer-01717",
   8197           "text": " The <code>arrayLayer</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8198         },
   8199         {
   8200           "vuid": "VUID-vkGetImageSubresourceLayout-device-parameter",
   8201           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8202         },
   8203         {
   8204           "vuid": "VUID-vkGetImageSubresourceLayout-image-parameter",
   8205           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   8206         },
   8207         {
   8208           "vuid": "VUID-vkGetImageSubresourceLayout-pSubresource-parameter",
   8209           "text": " <code>pSubresource</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSubresource</code> structure"
   8210         },
   8211         {
   8212           "vuid": "VUID-vkGetImageSubresourceLayout-pLayout-parameter",
   8213           "text": " <code>pLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSubresourceLayout</code> structure"
   8214         },
   8215         {
   8216           "vuid": "VUID-vkGetImageSubresourceLayout-image-parent",
   8217           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   8218         }
   8219       ],
   8220       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8221         {
   8222           "vuid": "VUID-vkGetImageSubresourceLayout-format-01581",
   8223           "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and its <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a> with two planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
   8224         },
   8225         {
   8226           "vuid": "VUID-vkGetImageSubresourceLayout-format-01582",
   8227           "text": " If the <code>tiling</code> of the <code>image</code> is <code>VK_IMAGE_TILING_LINEAR</code> and its <code>format</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a> with three planes, the <code>aspectMask</code> member of <code>pSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
   8228         }
   8229       ],
   8230       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   8231         {
   8232           "vuid": "VUID-vkGetImageSubresourceLayout-image-01895",
   8233           "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory."
   8234         }
   8235       ]
   8236     },
   8237     "VkImageSubresource": {
   8238       "core": [
   8239         {
   8240           "vuid": "VUID-VkImageSubresource-aspectMask-parameter",
   8241           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
   8242         },
   8243         {
   8244           "vuid": "VUID-VkImageSubresource-aspectMask-requiredbitmask",
   8245           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   8246         }
   8247       ]
   8248     },
   8249     "vkGetImageDrmFormatModifierPropertiesEXT": {
   8250       "(VK_EXT_image_drm_format_modifier)": [
   8251         {
   8252           "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-02272",
   8253           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkImageCreateInfo\"><code>tiling</code></a> equal to <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>."
   8254         },
   8255         {
   8256           "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-device-parameter",
   8257           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8258         },
   8259         {
   8260           "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parameter",
   8261           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   8262         },
   8263         {
   8264           "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-pProperties-parameter",
   8265           "text": " <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageDrmFormatModifierPropertiesEXT</code> structure"
   8266         },
   8267         {
   8268           "vuid": "VUID-vkGetImageDrmFormatModifierPropertiesEXT-image-parent",
   8269           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   8270         }
   8271       ]
   8272     },
   8273     "VkImageDrmFormatModifierPropertiesEXT": {
   8274       "(VK_EXT_image_drm_format_modifier)": [
   8275         {
   8276           "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType",
   8277           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT</code>"
   8278         },
   8279         {
   8280           "vuid": "VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext",
   8281           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   8282         }
   8283       ]
   8284     },
   8285     "vkDestroyImage": {
   8286       "core": [
   8287         {
   8288           "vuid": "VUID-vkDestroyImage-image-01000",
   8289           "text": " All submitted commands that refer to <code>image</code>, either directly or via a <code>VkImageView</code>, <strong class=\"purple\">must</strong> have completed execution"
   8290         },
   8291         {
   8292           "vuid": "VUID-vkDestroyImage-image-01001",
   8293           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   8294         },
   8295         {
   8296           "vuid": "VUID-vkDestroyImage-image-01002",
   8297           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>image</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   8298         },
   8299         {
   8300           "vuid": "VUID-vkDestroyImage-device-parameter",
   8301           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8302         },
   8303         {
   8304           "vuid": "VUID-vkDestroyImage-image-parameter",
   8305           "text": " If <code>image</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   8306         },
   8307         {
   8308           "vuid": "VUID-vkDestroyImage-pAllocator-parameter",
   8309           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   8310         },
   8311         {
   8312           "vuid": "VUID-vkDestroyImage-image-parent",
   8313           "text": " If <code>image</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   8314         }
   8315       ]
   8316     },
   8317     "vkCreateImageView": {
   8318       "core": [
   8319         {
   8320           "vuid": "VUID-vkCreateImageView-device-parameter",
   8321           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8322         },
   8323         {
   8324           "vuid": "VUID-vkCreateImageView-pCreateInfo-parameter",
   8325           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewCreateInfo</code> structure"
   8326         },
   8327         {
   8328           "vuid": "VUID-vkCreateImageView-pAllocator-parameter",
   8329           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   8330         },
   8331         {
   8332           "vuid": "VUID-vkCreateImageView-pView-parameter",
   8333           "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageView</code> handle"
   8334         }
   8335       ]
   8336     },
   8337     "VkImageViewCreateInfo": {
   8338       "core": [
   8339         {
   8340           "vuid": "VUID-VkImageViewCreateInfo-image-01003",
   8341           "text": " If <code>image</code> was not created with <code>VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT</code> then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   8342         },
   8343         {
   8344           "vuid": "VUID-VkImageViewCreateInfo-viewType-01004",
   8345           "text": " If the <a href=\"#features-imageCubeArray\">image cubemap arrays</a> feature is not enabled, <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   8346         },
   8347         {
   8348           "vuid": "VUID-VkImageViewCreateInfo-None-02273",
   8349           "text": " The <a href=\"#resources-image-view-format-features\">format features</a> of the resultant image view <strong class=\"purple\">must</strong> contain at least one bit."
   8350         },
   8351         {
   8352           "vuid": "VUID-VkImageViewCreateInfo-usage-02274",
   8353           "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, then the <a href=\"#resources-image-view-format-features\">format features</a> of the resultant image view <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT</code>."
   8354         },
   8355         {
   8356           "vuid": "VUID-VkImageViewCreateInfo-usage-02275",
   8357           "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT</code>."
   8358         },
   8359         {
   8360           "vuid": "VUID-VkImageViewCreateInfo-usage-02276",
   8361           "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>."
   8362         },
   8363         {
   8364           "vuid": "VUID-VkImageViewCreateInfo-usage-02277",
   8365           "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>."
   8366         },
   8367         {
   8368           "vuid": "VUID-VkImageViewCreateInfo-usage-02652",
   8369           "text": " If <code>usage</code> contains <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain at least one of <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code> or <code>VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT</code>."
   8370         },
   8371         {
   8372           "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01478",
   8373           "text": " <code>subresourceRange.baseMipLevel</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8374         },
   8375         {
   8376           "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01718",
   8377           "text": " If <code>subresourceRange.levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, <span class=\"eq\"><code>subresourceRange.baseMipLevel</code> &#43; <code>subresourceRange.levelCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8378         },
   8379         {
   8380           "vuid": "VUID-VkImageViewCreateInfo-image-01018",
   8381           "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>"
   8382         },
   8383         {
   8384           "vuid": "VUID-VkImageViewCreateInfo-image-01020",
   8385           "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   8386         },
   8387         {
   8388           "vuid": "VUID-VkImageViewCreateInfo-subResourceRange-01021",
   8389           "text": " <code>subresourceRange</code> and <code>viewType</code> <strong class=\"purple\">must</strong> be compatible with the image, as described in the <a href=\"#resources-image-views-compatibility\">compatibility table</a>"
   8390         },
   8391         {
   8392           "vuid": "VUID-VkImageViewCreateInfo-sType-sType",
   8393           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO</code>"
   8394         },
   8395         {
   8396           "vuid": "VUID-VkImageViewCreateInfo-pNext-pNext",
   8397           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageViewASTCDecodeModeEXT\">VkImageViewASTCDecodeModeEXT</a>, <a href=\"#VkImageViewUsageCreateInfo\">VkImageViewUsageCreateInfo</a>, or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
   8398         },
   8399         {
   8400           "vuid": "VUID-VkImageViewCreateInfo-sType-unique",
   8401           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   8402         },
   8403         {
   8404           "vuid": "VUID-VkImageViewCreateInfo-flags-parameter",
   8405           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageViewCreateFlagBits\">VkImageViewCreateFlagBits</a> values"
   8406         },
   8407         {
   8408           "vuid": "VUID-VkImageViewCreateInfo-image-parameter",
   8409           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   8410         },
   8411         {
   8412           "vuid": "VUID-VkImageViewCreateInfo-viewType-parameter",
   8413           "text": " <code>viewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
   8414         },
   8415         {
   8416           "vuid": "VUID-VkImageViewCreateInfo-format-parameter",
   8417           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   8418         },
   8419         {
   8420           "vuid": "VUID-VkImageViewCreateInfo-components-parameter",
   8421           "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure"
   8422         },
   8423         {
   8424           "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-parameter",
   8425           "text": " <code>subresourceRange</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceRange</code> structure"
   8426         }
   8427       ],
   8428       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   8429         {
   8430           "vuid": "VUID-VkImageViewCreateInfo-image-01005",
   8431           "text": " If <code>image</code> was created with <code>VK_IMAGE_TYPE_3D</code> but without <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set then <code>viewType</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>"
   8432         },
   8433         {
   8434           "vuid": "VUID-VkImageViewCreateInfo-image-01482",
   8435           "text": " If <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8436         },
   8437         {
   8438           "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01483",
   8439           "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is not a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, or <code>viewType</code> is not <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> &#43; <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8440         },
   8441         {
   8442           "vuid": "VUID-VkImageViewCreateInfo-image-01484",
   8443           "text": " If <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8444         },
   8445         {
   8446           "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01485",
   8447           "text": " If <code>subresourceRange</code>::<code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <code>image</code> is a 3D image created with <code>VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT</code> set, and <code>viewType</code> is <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>, <code>subresourceRange</code>::<code>layerCount</code> <strong class=\"purple\">must</strong> be non-zero and <span class=\"eq\"><code>subresourceRange</code>::<code>baseArrayLayer</code> &#43; <code>subresourceRange</code>::<code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>extent.depth</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8448         }
   8449       ],
   8450       "!(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
   8451         {
   8452           "vuid": "VUID-VkImageViewCreateInfo-image-01007",
   8453           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>"
   8454         }
   8455       ],
   8456       "!(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
   8457         {
   8458           "vuid": "VUID-VkImageViewCreateInfo-image-02085",
   8459           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
   8460         }
   8461       ],
   8462       "(VK_EXT_fragment_density_map)+!(VK_NV_shading_rate_image)": [
   8463         {
   8464           "vuid": "VUID-VkImageViewCreateInfo-image-02569",
   8465           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, or <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>"
   8466         }
   8467       ],
   8468       "(VK_EXT_fragment_density_map)+(VK_NV_shading_rate_image)": [
   8469         {
   8470           "vuid": "VUID-VkImageViewCreateInfo-image-02570",
   8471           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing at least one of <code>VK_IMAGE_USAGE_SAMPLED_BIT</code>, <code>VK_IMAGE_USAGE_STORAGE_BIT</code>, <code>VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code>, <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, or <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>"
   8472         }
   8473       ],
   8474       "(VK_EXT_fragment_density_map)": [
   8475         {
   8476           "vuid": "VUID-VkImageViewCreateInfo-image-02571",
   8477           "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>subresourceRange.levelCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   8478         },
   8479         {
   8480           "vuid": "VUID-VkImageViewCreateInfo-flags-02572",
   8481           "text": " If <a href=\"#features-fragmentdensitymapdynamic\">dynamic fragment density map</a> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT</code>"
   8482         },
   8483         {
   8484           "vuid": "VUID-VkImageViewCreateInfo-image-02573",
   8485           "text": " If <a href=\"#features-fragmentdensitymapdynamic\">dynamic fragment density map</a> feature is not enabled and <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain any of <code>VK_IMAGE_CREATE_PROTECTED_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_BINDING_BIT</code>, <code>VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT</code>, or <code>VK_IMAGE_CREATE_SPARSE_ALIASED_BIT</code>"
   8486         }
   8487       ],
   8488       "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   8489         {
   8490           "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01480",
   8491           "text": " <code>subresourceRange.baseArrayLayer</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8492         },
   8493         {
   8494           "vuid": "VUID-VkImageViewCreateInfo-subresourceRange-01719",
   8495           "text": " If <code>subresourceRange.layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, <span class=\"eq\"><code>subresourceRange.baseArrayLayer</code> &#43; <code>subresourceRange.layerCount</code></span> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   8496         }
   8497       ],
   8498       "(VK_VERSION_1_1,VK_KHR_maintenance2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8499         {
   8500           "vuid": "VUID-VkImageViewCreateInfo-image-01759",
   8501           "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>"
   8502         }
   8503       ],
   8504       "!(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8505         {
   8506           "vuid": "VUID-VkImageViewCreateInfo-image-01760",
   8507           "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>"
   8508         }
   8509       ],
   8510       "(VK_VERSION_1_1,VK_KHR_maintenance2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8511         {
   8512           "vuid": "VUID-VkImageViewCreateInfo-image-01761",
   8513           "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, but without the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, and if the <code>format</code> of the <code>image</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <code>format</code> used to create <code>image</code>, as defined in <a href=\"#formats-compatibility-classes\">Format Compatibility Classes</a>"
   8514         }
   8515       ],
   8516       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   8517         {
   8518           "vuid": "VUID-VkImageViewCreateInfo-image-01583",
   8519           "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be compatible with, or <strong class=\"purple\">must</strong> be an uncompressed format that is size-compatible with, the <code>format</code> used to create <code>image</code>."
   8520         },
   8521         {
   8522           "vuid": "VUID-VkImageViewCreateInfo-image-01584",
   8523           "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT</code> flag, the <code>levelCount</code> and <code>layerCount</code> members of <code>subresourceRange</code> <strong class=\"purple\">must</strong> both be <code>1</code>."
   8524         }
   8525       ],
   8526       "(VK_KHR_image_format_list)": [
   8527         {
   8528           "vuid": "VUID-VkImageViewCreateInfo-pNext-01585",
   8529           "text": " If a <code>VkImageFormatListCreateInfoKHR</code> structure was included in the <code>pNext</code> chain of the <code>VkImageCreateInfo</code> struct used when creating <code>image</code> and the <code>viewFormatCount</code> field of <code>VkImageFormatListCreateInfoKHR</code> is not zero then <code>format</code> <strong class=\"purple\">must</strong> be one of the formats in <code>VkImageFormatListCreateInfoKHR</code>::<code>pViewFormats</code>."
   8530         }
   8531       ],
   8532       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8533         {
   8534           "vuid": "VUID-VkImageViewCreateInfo-image-01586",
   8535           "text": " If <code>image</code> was created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format, and if <code>subresourceRange.aspectMask</code> is one of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>, then <code>format</code> <strong class=\"purple\">must</strong> be compatible with the <a href=\"#VkFormat\">VkFormat</a> for the plane of the <code>image</code> <code>format</code> indicated by <code>subresourceRange.aspectMask</code>, as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>"
   8536         },
   8537         {
   8538           "vuid": "VUID-VkImageViewCreateInfo-image-01762",
   8539           "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, or if the <code>format</code> of the <code>image</code> is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar</a> format and if <code>subresourceRange.aspectMask</code> is <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>"
   8540         },
   8541         {
   8542           "vuid": "VUID-VkImageViewCreateInfo-pNext-01970",
   8543           "text": " If the <code>pNext</code> chain contains an instance of <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> with a <code>conversion</code> value other than <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> have the value <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>."
   8544         }
   8545       ],
   8546       "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8547         {
   8548           "vuid": "VUID-VkImageViewCreateInfo-image-01019",
   8549           "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code> flag, <code>format</code> <strong class=\"purple\">must</strong> be identical to the <code>format</code> used to create <code>image</code>"
   8550         }
   8551       ],
   8552       "(VK_ANDROID_external_memory_android_hardware_buffer)": [
   8553         {
   8554           "vuid": "VUID-VkImageViewCreateInfo-image-02399",
   8555           "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>."
   8556         },
   8557         {
   8558           "vuid": "VUID-VkImageViewCreateInfo-image-02400",
   8559           "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a> with a <code>conversion</code> object created with the same external format as <code>image</code>."
   8560         },
   8561         {
   8562           "vuid": "VUID-VkImageViewCreateInfo-image-02401",
   8563           "text": " If <code>image</code> has an <a href=\"#memory-external-android-hardware-buffer-external-formats\">external format</a>, all members of <code>components</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>."
   8564         }
   8565       ],
   8566       "(VK_NV_shading_rate_image)": [
   8567         {
   8568           "vuid": "VUID-VkImageViewCreateInfo-image-02086",
   8569           "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>viewType</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>"
   8570         },
   8571         {
   8572           "vuid": "VUID-VkImageViewCreateInfo-image-02087",
   8573           "text": " If <code>image</code> was created with <code>usage</code> containing <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_R8_UINT</code>"
   8574         }
   8575       ]
   8576     },
   8577     "VkImageViewUsageCreateInfo": {
   8578       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   8579         {
   8580           "vuid": "VUID-VkImageViewUsageCreateInfo-usage-01587",
   8581           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not include any set bits that were not set in the <code>usage</code> member of the <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> structure used to create the image this image view is created from."
   8582         },
   8583         {
   8584           "vuid": "VUID-VkImageViewUsageCreateInfo-sType-sType",
   8585           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO</code>"
   8586         },
   8587         {
   8588           "vuid": "VUID-VkImageViewUsageCreateInfo-usage-parameter",
   8589           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   8590         },
   8591         {
   8592           "vuid": "VUID-VkImageViewUsageCreateInfo-usage-requiredbitmask",
   8593           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   8594         }
   8595       ]
   8596     },
   8597     "VkImageSubresourceRange": {
   8598       "core": [
   8599         {
   8600           "vuid": "VUID-VkImageSubresourceRange-levelCount-01720",
   8601           "text": " If <code>levelCount</code> is not <code>VK_REMAINING_MIP_LEVELS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   8602         },
   8603         {
   8604           "vuid": "VUID-VkImageSubresourceRange-layerCount-01721",
   8605           "text": " If <code>layerCount</code> is not <code>VK_REMAINING_ARRAY_LAYERS</code>, it <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   8606         },
   8607         {
   8608           "vuid": "VUID-VkImageSubresourceRange-aspectMask-parameter",
   8609           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
   8610         },
   8611         {
   8612           "vuid": "VUID-VkImageSubresourceRange-aspectMask-requiredbitmask",
   8613           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   8614         }
   8615       ],
   8616       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8617         {
   8618           "vuid": "VUID-VkImageSubresourceRange-aspectMask-01670",
   8619           "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then it <strong class=\"purple\">must</strong> not include any of <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
   8620         }
   8621       ],
   8622       "(VK_EXT_image_drm_format_modifier)": [
   8623         {
   8624           "vuid": "VUID-VkImageSubresourceRange-aspectMask-02278",
   8625           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>."
   8626         }
   8627       ]
   8628     },
   8629     "VkComponentMapping": {
   8630       "core": [
   8631         {
   8632           "vuid": "VUID-VkComponentMapping-r-parameter",
   8633           "text": " <code>r</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
   8634         },
   8635         {
   8636           "vuid": "VUID-VkComponentMapping-g-parameter",
   8637           "text": " <code>g</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
   8638         },
   8639         {
   8640           "vuid": "VUID-VkComponentMapping-b-parameter",
   8641           "text": " <code>b</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
   8642         },
   8643         {
   8644           "vuid": "VUID-VkComponentMapping-a-parameter",
   8645           "text": " <code>a</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkComponentSwizzle\">VkComponentSwizzle</a> value"
   8646         }
   8647       ]
   8648     },
   8649     "VkImageViewASTCDecodeModeEXT": {
   8650       "(VK_EXT_astc_decode_mode)": [
   8651         {
   8652           "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02230",
   8653           "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R16G16B16A16_SFLOAT</code>, <code>VK_FORMAT_R8G8B8A8_UNORM</code>, or <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>"
   8654         },
   8655         {
   8656           "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231",
   8657           "text": " If the <a href=\"#features-astc-decodeModeSharedExponent\"><code>decodeModeSharedExponent</code></a> feature is not enabled, <code>decodeMode</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_E5B9G9R9_UFLOAT_PACK32</code>"
   8658         },
   8659         {
   8660           "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232",
   8661           "text": " If <code>decodeMode</code> is <code>VK_FORMAT_R8G8B8A8_UNORM</code> the image view <strong class=\"purple\">must</strong> not include blocks using any of the ASTC HDR modes"
   8662         },
   8663         {
   8664           "vuid": "VUID-VkImageViewASTCDecodeModeEXT-format-02233",
   8665           "text": " <code>format</code> of the image view <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_ASTC_4x4_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_4x4_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_5x4_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_5x4_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_5x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_5x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_6x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_6x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_6x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_6x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_8x8_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_8x8_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x5_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x5_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x6_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x6_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x8_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x8_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_10x10_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_10x10_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_12x10_UNORM_BLOCK</code>, <code>VK_FORMAT_ASTC_12x10_SRGB_BLOCK</code>, <code>VK_FORMAT_ASTC_12x12_UNORM_BLOCK</code>, or <code>VK_FORMAT_ASTC_12x12_SRGB_BLOCK</code>"
   8666         },
   8667         {
   8668           "vuid": "VUID-VkImageViewASTCDecodeModeEXT-sType-sType",
   8669           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT</code>"
   8670         },
   8671         {
   8672           "vuid": "VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter",
   8673           "text": " <code>decodeMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   8674         }
   8675       ]
   8676     },
   8677     "vkDestroyImageView": {
   8678       "core": [
   8679         {
   8680           "vuid": "VUID-vkDestroyImageView-imageView-01026",
   8681           "text": " All submitted commands that refer to <code>imageView</code> <strong class=\"purple\">must</strong> have completed execution"
   8682         },
   8683         {
   8684           "vuid": "VUID-vkDestroyImageView-imageView-01027",
   8685           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   8686         },
   8687         {
   8688           "vuid": "VUID-vkDestroyImageView-imageView-01028",
   8689           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>imageView</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   8690         },
   8691         {
   8692           "vuid": "VUID-vkDestroyImageView-device-parameter",
   8693           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8694         },
   8695         {
   8696           "vuid": "VUID-vkDestroyImageView-imageView-parameter",
   8697           "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
   8698         },
   8699         {
   8700           "vuid": "VUID-vkDestroyImageView-pAllocator-parameter",
   8701           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   8702         },
   8703         {
   8704           "vuid": "VUID-vkDestroyImageView-imageView-parent",
   8705           "text": " If <code>imageView</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   8706         }
   8707       ]
   8708     },
   8709     "vkGetImageViewHandleNVX": {
   8710       "(VK_NVX_image_view_handle)": [
   8711         {
   8712           "vuid": "VUID-vkGetImageViewHandleNVX-device-parameter",
   8713           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8714         },
   8715         {
   8716           "vuid": "VUID-vkGetImageViewHandleNVX-pInfo-parameter",
   8717           "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageViewHandleInfoNVX</code> structure"
   8718         }
   8719       ]
   8720     },
   8721     "VkImageViewHandleInfoNVX": {
   8722       "(VK_NVX_image_view_handle)": [
   8723         {
   8724           "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-02654",
   8725           "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>"
   8726         },
   8727         {
   8728           "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-02655",
   8729           "text": " <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampler\">VkSampler</a> if <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>"
   8730         },
   8731         {
   8732           "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02656",
   8733           "text": "    If descriptorType is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or    <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the image that    <code>imageView</code> was created from <strong class=\"purple\">must</strong> have been created with the    <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> usage bit set"
   8734         },
   8735         {
   8736           "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-02657",
   8737           "text": " If descriptorType is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the image that <code>imageView</code> was created from <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_USAGE_STORAGE_BIT</code> usage bit set"
   8738         },
   8739         {
   8740           "vuid": "VUID-VkImageViewHandleInfoNVX-sType-sType",
   8741           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX</code>"
   8742         },
   8743         {
   8744           "vuid": "VUID-VkImageViewHandleInfoNVX-pNext-pNext",
   8745           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   8746         },
   8747         {
   8748           "vuid": "VUID-VkImageViewHandleInfoNVX-imageView-parameter",
   8749           "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
   8750         },
   8751         {
   8752           "vuid": "VUID-VkImageViewHandleInfoNVX-descriptorType-parameter",
   8753           "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
   8754         },
   8755         {
   8756           "vuid": "VUID-VkImageViewHandleInfoNVX-sampler-parameter",
   8757           "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle"
   8758         },
   8759         {
   8760           "vuid": "VUID-VkImageViewHandleInfoNVX-commonparent",
   8761           "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   8762         }
   8763       ]
   8764     },
   8765     "vkGetBufferMemoryRequirements": {
   8766       "core": [
   8767         {
   8768           "vuid": "VUID-vkGetBufferMemoryRequirements-device-parameter",
   8769           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8770         },
   8771         {
   8772           "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parameter",
   8773           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   8774         },
   8775         {
   8776           "vuid": "VUID-vkGetBufferMemoryRequirements-pMemoryRequirements-parameter",
   8777           "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure"
   8778         },
   8779         {
   8780           "vuid": "VUID-vkGetBufferMemoryRequirements-buffer-parent",
   8781           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   8782         }
   8783       ]
   8784     },
   8785     "vkGetImageMemoryRequirements": {
   8786       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8787         {
   8788           "vuid": "VUID-vkGetImageMemoryRequirements-image-01588",
   8789           "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag set"
   8790         }
   8791       ],
   8792       "core": [
   8793         {
   8794           "vuid": "VUID-vkGetImageMemoryRequirements-device-parameter",
   8795           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8796         },
   8797         {
   8798           "vuid": "VUID-vkGetImageMemoryRequirements-image-parameter",
   8799           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   8800         },
   8801         {
   8802           "vuid": "VUID-vkGetImageMemoryRequirements-pMemoryRequirements-parameter",
   8803           "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements</code> structure"
   8804         },
   8805         {
   8806           "vuid": "VUID-vkGetImageMemoryRequirements-image-parent",
   8807           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   8808         }
   8809       ]
   8810     },
   8811     "vkGetBufferMemoryRequirements2": {
   8812       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
   8813         {
   8814           "vuid": "VUID-vkGetBufferMemoryRequirements2-device-parameter",
   8815           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8816         },
   8817         {
   8818           "vuid": "VUID-vkGetBufferMemoryRequirements2-pInfo-parameter",
   8819           "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferMemoryRequirementsInfo2</code> structure"
   8820         },
   8821         {
   8822           "vuid": "VUID-vkGetBufferMemoryRequirements2-pMemoryRequirements-parameter",
   8823           "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure"
   8824         }
   8825       ]
   8826     },
   8827     "VkBufferMemoryRequirementsInfo2": {
   8828       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
   8829         {
   8830           "vuid": "VUID-VkBufferMemoryRequirementsInfo2-sType-sType",
   8831           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2</code>"
   8832         },
   8833         {
   8834           "vuid": "VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext",
   8835           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   8836         },
   8837         {
   8838           "vuid": "VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter",
   8839           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   8840         }
   8841       ]
   8842     },
   8843     "vkGetImageMemoryRequirements2": {
   8844       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
   8845         {
   8846           "vuid": "VUID-vkGetImageMemoryRequirements2-device-parameter",
   8847           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8848         },
   8849         {
   8850           "vuid": "VUID-vkGetImageMemoryRequirements2-pInfo-parameter",
   8851           "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageMemoryRequirementsInfo2</code> structure"
   8852         },
   8853         {
   8854           "vuid": "VUID-vkGetImageMemoryRequirements2-pMemoryRequirements-parameter",
   8855           "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2</code> structure"
   8856         }
   8857       ]
   8858     },
   8859     "VkImageMemoryRequirementsInfo2": {
   8860       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8861         {
   8862           "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01589",
   8863           "text": " If <code>image</code> was created with a <em>multi-planar</em> format and the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
   8864         },
   8865         {
   8866           "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01590",
   8867           "text": " If <code>image</code> was not created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> flag, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
   8868         }
   8869       ],
   8870       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
   8871         {
   8872           "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02279",
   8873           "text": " If <code>image</code> was created with <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> and with <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
   8874         },
   8875         {
   8876           "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-02280",
   8877           "text": " If <code>image</code> was created with a single-plane format and with any <code>tiling</code> other than <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>, then there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
   8878         }
   8879       ],
   8880       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_EXT_image_drm_format_modifier)": [
   8881         {
   8882           "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01591",
   8883           "text": " If <code>image</code> was created with a single-plane format, there <strong class=\"purple\">must</strong> not be a <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> in the <code>pNext</code> chain of the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a> structure"
   8884         }
   8885       ],
   8886       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
   8887         {
   8888           "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-01897",
   8889           "text": " If <code>image</code> was created with the <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code> external memory handle type, then <code>image</code> <strong class=\"purple\">must</strong> be bound to memory."
   8890         }
   8891       ],
   8892       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
   8893         {
   8894           "vuid": "VUID-VkImageMemoryRequirementsInfo2-sType-sType",
   8895           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2</code>"
   8896         },
   8897         {
   8898           "vuid": "VUID-VkImageMemoryRequirementsInfo2-pNext-pNext",
   8899           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a>"
   8900         },
   8901         {
   8902           "vuid": "VUID-VkImageMemoryRequirementsInfo2-image-parameter",
   8903           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   8904         }
   8905       ]
   8906     },
   8907     "VkImagePlaneMemoryRequirementsInfo": {
   8908       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   8909         {
   8910           "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02281",
   8911           "text": " If the image&#8217;s tiling is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image. (That is, for a two-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, and for a three-plane image <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>)."
   8912         },
   8913         {
   8914           "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-sType-sType",
   8915           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO</code>"
   8916         },
   8917         {
   8918           "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-parameter",
   8919           "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
   8920         }
   8921       ],
   8922       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
   8923         {
   8924           "vuid": "VUID-VkImagePlaneMemoryRequirementsInfo-planeAspect-02282",
   8925           "text": "  If the image&#8217;s tiling is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>,  then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the  image.  (That is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than  the  <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a>  associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>.)"
   8926         }
   8927       ]
   8928     },
   8929     "VkMemoryRequirements2": {
   8930       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
   8931         {
   8932           "vuid": "VUID-VkMemoryRequirements2-sType-sType",
   8933           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2</code>"
   8934         },
   8935         {
   8936           "vuid": "VUID-VkMemoryRequirements2-pNext-pNext",
   8937           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>"
   8938         }
   8939       ]
   8940     },
   8941     "VkMemoryDedicatedRequirements": {
   8942       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   8943         {
   8944           "vuid": "VUID-VkMemoryDedicatedRequirements-sType-sType",
   8945           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS</code>"
   8946         }
   8947       ]
   8948     },
   8949     "vkBindBufferMemory": {
   8950       "core": [
   8951         {
   8952           "vuid": "VUID-vkBindBufferMemory-buffer-01029",
   8953           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
   8954         },
   8955         {
   8956           "vuid": "VUID-vkBindBufferMemory-buffer-01030",
   8957           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
   8958         },
   8959         {
   8960           "vuid": "VUID-vkBindBufferMemory-memoryOffset-01031",
   8961           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
   8962         },
   8963         {
   8964           "vuid": "VUID-vkBindBufferMemory-memory-01035",
   8965           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
   8966         },
   8967         {
   8968           "vuid": "VUID-vkBindBufferMemory-memoryOffset-01036",
   8969           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
   8970         },
   8971         {
   8972           "vuid": "VUID-vkBindBufferMemory-size-01037",
   8973           "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
   8974         },
   8975         {
   8976           "vuid": "VUID-vkBindBufferMemory-device-parameter",
   8977           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   8978         },
   8979         {
   8980           "vuid": "VUID-vkBindBufferMemory-buffer-parameter",
   8981           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   8982         },
   8983         {
   8984           "vuid": "VUID-vkBindBufferMemory-memory-parameter",
   8985           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   8986         },
   8987         {
   8988           "vuid": "VUID-vkBindBufferMemory-buffer-parent",
   8989           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   8990         },
   8991         {
   8992           "vuid": "VUID-vkBindBufferMemory-memory-parent",
   8993           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   8994         }
   8995       ],
   8996       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   8997         {
   8998           "vuid": "VUID-vkBindBufferMemory-buffer-01444",
   8999           "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code>"
   9000         },
   9001         {
   9002           "vuid": "VUID-vkBindBufferMemory-memory-01508",
   9003           "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code>, and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
   9004         }
   9005       ],
   9006       "(VK_VERSION_1_1)": [
   9007         {
   9008           "vuid": "VUID-vkBindBufferMemory-None-01898",
   9009           "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit set, the buffer <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
   9010         },
   9011         {
   9012           "vuid": "VUID-vkBindBufferMemory-None-01899",
   9013           "text": " If buffer was created with the <code>VK_BUFFER_CREATE_PROTECTED_BIT</code> bit not set, the buffer <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
   9014         }
   9015       ],
   9016       "(VK_NV_dedicated_allocation)": [
   9017         {
   9018           "vuid": "VUID-vkBindBufferMemory-buffer-01038",
   9019           "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to a buffer handle created with identical creation parameters to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
   9020         }
   9021       ],
   9022       "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   9023         {
   9024           "vuid": "VUID-vkBindBufferMemory-buffer-01039",
   9025           "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
   9026         }
   9027       ]
   9028     },
   9029     "vkBindBufferMemory2": {
   9030       "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
   9031         {
   9032           "vuid": "VUID-vkBindBufferMemory2-device-parameter",
   9033           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9034         },
   9035         {
   9036           "vuid": "VUID-vkBindBufferMemory2-pBindInfos-parameter",
   9037           "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindBufferMemoryInfo</code> structures"
   9038         },
   9039         {
   9040           "vuid": "VUID-vkBindBufferMemory2-bindInfoCount-arraylength",
   9041           "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   9042         }
   9043       ]
   9044     },
   9045     "VkBindBufferMemoryInfo": {
   9046       "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
   9047         {
   9048           "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01593",
   9049           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
   9050         },
   9051         {
   9052           "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01594",
   9053           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
   9054         },
   9055         {
   9056           "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01595",
   9057           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
   9058         },
   9059         {
   9060           "vuid": "VUID-VkBindBufferMemoryInfo-memory-01599",
   9061           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
   9062         },
   9063         {
   9064           "vuid": "VUID-VkBindBufferMemoryInfo-memoryOffset-01600",
   9065           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code>"
   9066         },
   9067         {
   9068           "vuid": "VUID-VkBindBufferMemoryInfo-size-01601",
   9069           "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetBufferMemoryRequirements</code> with <code>buffer</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
   9070         },
   9071         {
   9072           "vuid": "VUID-VkBindBufferMemoryInfo-sType-sType",
   9073           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO</code>"
   9074         },
   9075         {
   9076           "vuid": "VUID-VkBindBufferMemoryInfo-pNext-pNext",
   9077           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>"
   9078         },
   9079         {
   9080           "vuid": "VUID-VkBindBufferMemoryInfo-buffer-parameter",
   9081           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   9082         },
   9083         {
   9084           "vuid": "VUID-VkBindBufferMemoryInfo-memory-parameter",
   9085           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   9086         },
   9087         {
   9088           "vuid": "VUID-VkBindBufferMemoryInfo-commonparent",
   9089           "text": " Both of <code>buffer</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   9090         }
   9091       ],
   9092       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   9093         {
   9094           "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01602",
   9095           "text": " If <code>buffer</code> requires a dedicated allocation(as reported by <a href=\"#vkGetBufferMemoryRequirements2\">vkGetBufferMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>buffer</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
   9096         },
   9097         {
   9098           "vuid": "VUID-VkBindBufferMemoryInfo-memory-01900",
   9099           "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>buffer</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
   9100         }
   9101       ],
   9102       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
   9103         {
   9104           "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01603",
   9105           "text": " If <code>buffer</code> was created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>buffer</code> equal to <code>buffer</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
   9106         }
   9107       ],
   9108       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   9109         {
   9110           "vuid": "VUID-VkBindBufferMemoryInfo-buffer-01604",
   9111           "text": " If <code>buffer</code> was not created with <a href=\"#VkDedicatedAllocationBufferCreateInfoNV\">VkDedicatedAllocationBufferCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
   9112         }
   9113       ],
   9114       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   9115         {
   9116           "vuid": "VUID-VkBindBufferMemoryInfo-pNext-01605",
   9117           "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindBufferMemoryDeviceGroupInfo\">VkBindBufferMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
   9118         }
   9119       ]
   9120     },
   9121     "VkBindBufferMemoryDeviceGroupInfo": {
   9122       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   9123         {
   9124           "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-deviceIndexCount-01606",
   9125           "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
   9126         },
   9127         {
   9128           "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-01607",
   9129           "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices"
   9130         },
   9131         {
   9132           "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-sType-sType",
   9133           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO</code>"
   9134         },
   9135         {
   9136           "vuid": "VUID-VkBindBufferMemoryDeviceGroupInfo-pDeviceIndices-parameter",
   9137           "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
   9138         }
   9139       ]
   9140     },
   9141     "vkBindImageMemory": {
   9142       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   9143         {
   9144           "vuid": "VUID-vkBindImageMemory-image-01608",
   9145           "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> set."
   9146         }
   9147       ],
   9148       "core": [
   9149         {
   9150           "vuid": "VUID-vkBindImageMemory-image-01044",
   9151           "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
   9152         },
   9153         {
   9154           "vuid": "VUID-vkBindImageMemory-image-01045",
   9155           "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
   9156         },
   9157         {
   9158           "vuid": "VUID-vkBindImageMemory-memoryOffset-01046",
   9159           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
   9160         },
   9161         {
   9162           "vuid": "VUID-vkBindImageMemory-memory-01047",
   9163           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
   9164         },
   9165         {
   9166           "vuid": "VUID-vkBindImageMemory-memoryOffset-01048",
   9167           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code>"
   9168         },
   9169         {
   9170           "vuid": "VUID-vkBindImageMemory-size-01049",
   9171           "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <code>vkGetImageMemoryRequirements</code> with <code>image</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
   9172         },
   9173         {
   9174           "vuid": "VUID-vkBindImageMemory-device-parameter",
   9175           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9176         },
   9177         {
   9178           "vuid": "VUID-vkBindImageMemory-image-parameter",
   9179           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   9180         },
   9181         {
   9182           "vuid": "VUID-vkBindImageMemory-memory-parameter",
   9183           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   9184         },
   9185         {
   9186           "vuid": "VUID-vkBindImageMemory-image-parent",
   9187           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   9188         },
   9189         {
   9190           "vuid": "VUID-vkBindImageMemory-memory-parent",
   9191           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   9192         }
   9193       ],
   9194       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   9195         {
   9196           "vuid": "VUID-vkBindImageMemory-image-01445",
   9197           "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code>"
   9198         }
   9199       ],
   9200       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
   9201         {
   9202           "vuid": "VUID-vkBindImageMemory-memory-01509",
   9203           "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
   9204         }
   9205       ],
   9206       "(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
   9207         {
   9208           "vuid": "VUID-vkBindImageMemory-memory-02628",
   9209           "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
   9210         },
   9211         {
   9212           "vuid": "VUID-vkBindImageMemory-memory-02629",
   9213           "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <code>VkImageCreateInfo</code>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created."
   9214         }
   9215       ],
   9216       "(VK_VERSION_1_1)": [
   9217         {
   9218           "vuid": "VUID-vkBindImageMemory-None-01901",
   9219           "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit set, the image <strong class=\"purple\">must</strong> be bound to a memory object allocated with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
   9220         },
   9221         {
   9222           "vuid": "VUID-vkBindImageMemory-None-01902",
   9223           "text": " If image was created with the <code>VK_IMAGE_CREATE_PROTECTED_BIT</code> bit not set, the image <strong class=\"purple\">must</strong> not be bound to a memory object created with a memory type that reports <code>VK_MEMORY_PROPERTY_PROTECTED_BIT</code>"
   9224         }
   9225       ],
   9226       "(VK_NV_dedicated_allocation)": [
   9227         {
   9228           "vuid": "VUID-vkBindImageMemory-image-01050",
   9229           "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to an image handle created with identical creation parameters to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
   9230         }
   9231       ],
   9232       "(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   9233         {
   9234           "vuid": "VUID-vkBindImageMemory-image-01051",
   9235           "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
   9236         }
   9237       ]
   9238     },
   9239     "vkBindImageMemory2": {
   9240       "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
   9241         {
   9242           "vuid": "VUID-vkBindImageMemory2-device-parameter",
   9243           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9244         },
   9245         {
   9246           "vuid": "VUID-vkBindImageMemory2-pBindInfos-parameter",
   9247           "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindImageMemoryInfo</code> structures"
   9248         },
   9249         {
   9250           "vuid": "VUID-vkBindImageMemory2-bindInfoCount-arraylength",
   9251           "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   9252         }
   9253       ]
   9254     },
   9255     "VkBindImageMemoryInfo": {
   9256       "(VK_VERSION_1_1,VK_KHR_bind_memory2)": [
   9257         {
   9258           "vuid": "VUID-VkBindImageMemoryInfo-image-01609",
   9259           "text": " <code>image</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
   9260         },
   9261         {
   9262           "vuid": "VUID-VkBindImageMemoryInfo-image-01610",
   9263           "text": " <code>image</code> <strong class=\"purple\">must</strong> not have been created with any sparse memory binding flags"
   9264         },
   9265         {
   9266           "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01611",
   9267           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
   9268         },
   9269         {
   9270           "vuid": "VUID-VkBindImageMemoryInfo-sType-sType",
   9271           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO</code>"
   9272         },
   9273         {
   9274           "vuid": "VUID-VkBindImageMemoryInfo-pNext-pNext",
   9275           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, or <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a>"
   9276         },
   9277         {
   9278           "vuid": "VUID-VkBindImageMemoryInfo-sType-unique",
   9279           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   9280         },
   9281         {
   9282           "vuid": "VUID-VkBindImageMemoryInfo-image-parameter",
   9283           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   9284         },
   9285         {
   9286           "vuid": "VUID-VkBindImageMemoryInfo-commonparent",
   9287           "text": " Both of <code>image</code>, and <code>memory</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   9288         }
   9289       ],
   9290       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   9291         {
   9292           "vuid": "VUID-VkBindImageMemoryInfo-memory-01612",
   9293           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
   9294         },
   9295         {
   9296           "vuid": "VUID-VkBindImageMemoryInfo-memoryOffset-01613",
   9297           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with <code>image</code>"
   9298         },
   9299         {
   9300           "vuid": "VUID-VkBindImageMemoryInfo-memory-01614",
   9301           "text": " The difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements\">vkGetImageMemoryRequirements</a> with the same <code>image</code>"
   9302         }
   9303       ],
   9304       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   9305         {
   9306           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01615",
   9307           "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
   9308         },
   9309         {
   9310           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01616",
   9311           "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code>"
   9312         },
   9313         {
   9314           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01617",
   9315           "text": " If the <code>pNext</code> chain does not include an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code>"
   9316         },
   9317         {
   9318           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01618",
   9319           "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_DISJOINT_BIT</code> bit set."
   9320         },
   9321         {
   9322           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01619",
   9323           "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
   9324         },
   9325         {
   9326           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01620",
   9327           "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
   9328         },
   9329         {
   9330           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01621",
   9331           "text": " If the <code>pNext</code> chain includes an instance of the <a href=\"#VkBindImagePlaneMemoryInfo\">VkBindImagePlaneMemoryInfo</a> structure, the difference of the size of <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be greater than or equal to the <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> with the same <code>image</code> and the correct <code>planeAspect</code> for this plane in the <a href=\"#VkImagePlaneMemoryRequirementsInfo\">VkImagePlaneMemoryRequirementsInfo</a> structure attached to the <a href=\"#VkImageMemoryRequirementsInfo2\">VkImageMemoryRequirementsInfo2</a>&#8217;s <code>pNext</code> chain"
   9332         }
   9333       ],
   9334       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   9335         {
   9336           "vuid": "VUID-VkBindImageMemoryInfo-image-01622",
   9337           "text": " If <code>image</code> requires a dedicated allocation (as reported by <a href=\"#vkGetImageMemoryRequirements2\">vkGetImageMemoryRequirements2</a> in <a href=\"#VkMemoryDedicatedRequirements\">VkMemoryDedicatedRequirements</a>::requiresDedicatedAllocation for <code>image</code>), <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
   9338         }
   9339       ],
   9340       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+!(VK_NV_dedicated_allocation_image_aliasing)": [
   9341         {
   9342           "vuid": "VUID-VkBindImageMemoryInfo-memory-01903",
   9343           "text": " If the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
   9344         }
   9345       ],
   9346       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_dedicated_allocation)+(VK_NV_dedicated_allocation_image_aliasing)": [
   9347         {
   9348           "vuid": "VUID-VkBindImageMemoryInfo-memory-02630",
   9349           "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is not enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>image</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero."
   9350         },
   9351         {
   9352           "vuid": "VUID-VkBindImageMemoryInfo-memory-02631",
   9353           "text": " If the <a href=\"#features-dedicatedAllocationImageAliasing\">dedicated allocation image aliasing</a> feature is enabled, and the <code>VkMemoryAllocateInfo</code> provided when <code>memory</code> was allocated included an instance of <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a> in its <code>pNext</code> chain, and <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> was not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, then <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero, and <code>image</code> <strong class=\"purple\">must</strong> be either equal to <a href=\"#VkMemoryDedicatedAllocateInfo\">VkMemoryDedicatedAllocateInfo</a>::<code>image</code> or an image that was created using the same parameters in <code>VkImageCreateInfo</code>, with the exception that <code>extent</code> and <code>arrayLayers</code> <strong class=\"purple\">may</strong> differ subject to the following restrictions: every dimension in the <code>extent</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created; and the <code>arrayLayers</code> parameter of the image being bound <strong class=\"purple\">must</strong> be equal to or smaller than the original image for which the allocation was created."
   9354         }
   9355       ],
   9356       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)": [
   9357         {
   9358           "vuid": "VUID-VkBindImageMemoryInfo-image-01623",
   9359           "text": " If <code>image</code> was created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> have been created with <a href=\"#VkDedicatedAllocationMemoryAllocateInfoNV\">VkDedicatedAllocationMemoryAllocateInfoNV</a>::<code>image</code> equal to <code>image</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> be zero"
   9360         }
   9361       ],
   9362       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_NV_dedicated_allocation)+!(VK_VERSION_1_1,VK_KHR_dedicated_allocation)": [
   9363         {
   9364           "vuid": "VUID-VkBindImageMemoryInfo-image-01624",
   9365           "text": " If <code>image</code> was not created with <a href=\"#VkDedicatedAllocationImageCreateInfoNV\">VkDedicatedAllocationImageCreateInfoNV</a>::<code>dedicatedAllocation</code> equal to <code>VK_TRUE</code>, <code>memory</code> <strong class=\"purple\">must</strong> not have been allocated dedicated for a specific buffer or image"
   9366         }
   9367       ],
   9368       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+!(VK_VERSION_1_1+VK_KHR_swapchain)+!(VK_KHR_device_group+VK_KHR_swapchain)": [
   9369         {
   9370           "vuid": "VUID-VkBindImageMemoryInfo-memory-01625",
   9371           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
   9372         }
   9373       ],
   9374       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   9375         {
   9376           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01626",
   9377           "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all instances of <code>memory</code> specified by <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pDeviceIndices</code> <strong class=\"purple\">must</strong> have been allocated"
   9378         },
   9379         {
   9380           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01627",
   9381           "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, and <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>splitInstanceBindRegionCount</code> is not zero, then <code>image</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT</code> bit set"
   9382         },
   9383         {
   9384           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01628",
   9385           "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be valid rectangles contained within the dimensions of <code>image</code>"
   9386         },
   9387         {
   9388           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01629",
   9389           "text": " If the <code>pNext</code> chain includes <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>, the union of the areas of all elements of <a href=\"#VkBindImageMemoryDeviceGroupInfo\">VkBindImageMemoryDeviceGroupInfo</a>::<code>pSplitInstanceBindRegions</code> that correspond to the same instance of <code>image</code> <strong class=\"purple\">must</strong> cover the entire image."
   9390         }
   9391       ],
   9392       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
   9393         {
   9394           "vuid": "VUID-VkBindImageMemoryInfo-image-01630",
   9395           "text": " If <code>image</code> was created with a valid swapchain handle in <a href=\"#VkImageSwapchainCreateInfoKHR\">VkImageSwapchainCreateInfoKHR</a>::<code>swapchain</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a valid instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>"
   9396         },
   9397         {
   9398           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01631",
   9399           "text": " If the <code>pNext</code> chain includes an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   9400         },
   9401         {
   9402           "vuid": "VUID-VkBindImageMemoryInfo-pNext-01632",
   9403           "text": " If the <code>pNext</code> chain does not include an instance of <a href=\"#VkBindImageMemorySwapchainInfoKHR\">VkBindImageMemorySwapchainInfoKHR</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceMemory\">VkDeviceMemory</a> handle"
   9404         }
   9405       ]
   9406     },
   9407     "VkBindImageMemoryDeviceGroupInfo": {
   9408       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   9409         {
   9410           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01633",
   9411           "text": " At least one of <code>deviceIndexCount</code> and <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> be zero."
   9412         },
   9413         {
   9414           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-deviceIndexCount-01634",
   9415           "text": " <code>deviceIndexCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device"
   9416         },
   9417         {
   9418           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-01635",
   9419           "text": " All elements of <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be valid device indices."
   9420         },
   9421         {
   9422           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-splitInstanceBindRegionCount-01636",
   9423           "text": " <code>splitInstanceBindRegionCount</code> <strong class=\"purple\">must</strong> either be zero or equal to the number of physical devices in the logical device squared"
   9424         },
   9425         {
   9426           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-01637",
   9427           "text": " Elements of <code>pSplitInstanceBindRegions</code> that correspond to the same instance of an image <strong class=\"purple\">must</strong> not overlap."
   9428         },
   9429         {
   9430           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01638",
   9431           "text": " The <code>offset.x</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of all non-metadata aspects of the image"
   9432         },
   9433         {
   9434           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-offset-01639",
   9435           "text": " The <code>offset.y</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of all non-metadata aspects of the image"
   9436         },
   9437         {
   9438           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01640",
   9439           "text": " The <code>extent.width</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of all non-metadata aspects of the image, or else <code>extent.width</code> + <code>offset.x</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
   9440         },
   9441         {
   9442           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-extent-01641",
   9443           "text": " The <code>extent.height</code> member of any element of <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of all non-metadata aspects of the image, or else <code>extent.height</code><br> <code>offset.y</code> <strong class=\"purple\">must</strong> equal the width of the image subresource"
   9444         },
   9445         {
   9446           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-sType-sType",
   9447           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO</code>"
   9448         },
   9449         {
   9450           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pDeviceIndices-parameter",
   9451           "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
   9452         },
   9453         {
   9454           "vuid": "VUID-VkBindImageMemoryDeviceGroupInfo-pSplitInstanceBindRegions-parameter",
   9455           "text": " If <code>splitInstanceBindRegionCount</code> is not <code>0</code>, <code>pSplitInstanceBindRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>splitInstanceBindRegionCount</code> <code>VkRect2D</code> structures"
   9456         }
   9457       ]
   9458     },
   9459     "VkBindImageMemorySwapchainInfoKHR": {
   9460       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_device_group)+(VK_KHR_swapchain)": [
   9461         {
   9462           "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-imageIndex-01644",
   9463           "text": " <code>imageIndex</code> <strong class=\"purple\">must</strong> be less than the number of images in <code>swapchain</code>"
   9464         },
   9465         {
   9466           "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-sType-sType",
   9467           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR</code>"
   9468         },
   9469         {
   9470           "vuid": "VUID-VkBindImageMemorySwapchainInfoKHR-swapchain-parameter",
   9471           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   9472         }
   9473       ]
   9474     },
   9475     "VkBindImagePlaneMemoryInfo": {
   9476       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   9477         {
   9478           "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02283",
   9479           "text": " If the image&#8217;s tiling is <code>VK_IMAGE_TILING_LINEAR</code> or <code>VK_IMAGE_TILING_OPTIMAL</code>, then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>format plane</em> for the image. (That is, <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> for &#8220;<code>_2PLANE</code>&#8221; formats and <code>planeAspect</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> for &#8220;<code>_3PLANE</code>&#8221; formats.)"
   9480         },
   9481         {
   9482           "vuid": "VUID-VkBindImagePlaneMemoryInfo-None-01643",
   9483           "text": " A single call to <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> <strong class=\"purple\">must</strong> bind all or none of the planes of an image (i.e. bindings to all planes of an image <strong class=\"purple\">must</strong> be made in a single <a href=\"#vkBindImageMemory2\">vkBindImageMemory2</a> call), as separate bindings"
   9484         },
   9485         {
   9486           "vuid": "VUID-VkBindImagePlaneMemoryInfo-sType-sType",
   9487           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO</code>"
   9488         },
   9489         {
   9490           "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-parameter",
   9491           "text": " <code>planeAspect</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> value"
   9492         }
   9493       ],
   9494       "(VK_VERSION_1_1,VK_KHR_bind_memory2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_image_drm_format_modifier)": [
   9495         {
   9496           "vuid": "VUID-VkBindImagePlaneMemoryInfo-planeAspect-02284",
   9497           "text": "  If the image&#8217;s tiling is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>,  then <code>planeAspect</code> <strong class=\"purple\">must</strong> be a single valid <em>memory plane</em> for the  image.  (That is, <code>aspectMask</code> <strong class=\"purple\">must</strong> specify a plane index that is less than  the  <a href=\"#VkDrmFormatModifierPropertiesEXT\"><code>drmFormatModifierPlaneCount</code></a>  associated with the image&#8217;s <a href=\"#VkImageCreateInfo\"><code>format</code></a> and <a href=\"#VkImageDrmFormatModifierPropertiesEXT\"><code>drmFormatModifier</code></a>.)"
   9498         }
   9499       ]
   9500     },
   9501     "vkCreateAccelerationStructureNV": {
   9502       "(VK_NV_ray_tracing)": [
   9503         {
   9504           "vuid": "VUID-vkCreateAccelerationStructureNV-device-parameter",
   9505           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9506         },
   9507         {
   9508           "vuid": "VUID-vkCreateAccelerationStructureNV-pCreateInfo-parameter",
   9509           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureCreateInfoNV</code> structure"
   9510         },
   9511         {
   9512           "vuid": "VUID-vkCreateAccelerationStructureNV-pAllocator-parameter",
   9513           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   9514         },
   9515         {
   9516           "vuid": "VUID-vkCreateAccelerationStructureNV-pAccelerationStructure-parameter",
   9517           "text": " <code>pAccelerationStructure</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkAccelerationStructureNV</code> handle"
   9518         }
   9519       ]
   9520     },
   9521     "VkAccelerationStructureCreateInfoNV": {
   9522       "(VK_NV_ray_tracing)": [
   9523         {
   9524           "vuid": "VUID-VkAccelerationStructureCreateInfoNV-compactedSize-02421",
   9525           "text": " If <code>compactedSize</code> is not <code>0</code> then both <code>info.geometryCount</code> and <code>info.instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   9526         },
   9527         {
   9528           "vuid": "VUID-VkAccelerationStructureCreateInfoNV-sType-sType",
   9529           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV</code>"
   9530         },
   9531         {
   9532           "vuid": "VUID-VkAccelerationStructureCreateInfoNV-pNext-pNext",
   9533           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   9534         },
   9535         {
   9536           "vuid": "VUID-VkAccelerationStructureCreateInfoNV-info-parameter",
   9537           "text": " <code>info</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureInfoNV</code> structure"
   9538         }
   9539       ]
   9540     },
   9541     "VkAccelerationStructureInfoNV": {
   9542       "(VK_NV_ray_tracing)": [
   9543         {
   9544           "vuid": "VUID-VkAccelerationStructureInfoNV-geometryCount-02422",
   9545           "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
   9546         },
   9547         {
   9548           "vuid": "VUID-VkAccelerationStructureInfoNV-instanceCount-02423",
   9549           "text": " <code>instanceCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxInstanceCount</code>"
   9550         },
   9551         {
   9552           "vuid": "VUID-VkAccelerationStructureInfoNV-maxTriangleCount-02424",
   9553           "text": " The total number of triangles in all geometries <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxTriangleCount</code>"
   9554         },
   9555         {
   9556           "vuid": "VUID-VkAccelerationStructureInfoNV-type-02425",
   9557           "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV</code> then <code>geometryCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   9558         },
   9559         {
   9560           "vuid": "VUID-VkAccelerationStructureInfoNV-type-02426",
   9561           "text": " If <code>type</code> is <code>VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV</code> then <code>instanceCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   9562         },
   9563         {
   9564           "vuid": "VUID-VkAccelerationStructureInfoNV-flags-02592",
   9565           "text": " If <code>flags</code> has the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV</code> bit set, then it <strong class=\"purple\">must</strong> not have the <code>VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV</code> bit set"
   9566         },
   9567         {
   9568           "vuid": "VUID-VkAccelerationStructureInfoNV-sType-sType",
   9569           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV</code>"
   9570         },
   9571         {
   9572           "vuid": "VUID-VkAccelerationStructureInfoNV-pNext-pNext",
   9573           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   9574         },
   9575         {
   9576           "vuid": "VUID-VkAccelerationStructureInfoNV-type-parameter",
   9577           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureTypeNV\">VkAccelerationStructureTypeNV</a> value"
   9578         },
   9579         {
   9580           "vuid": "VUID-VkAccelerationStructureInfoNV-flags-parameter",
   9581           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBuildAccelerationStructureFlagBitsNV\">VkBuildAccelerationStructureFlagBitsNV</a> values"
   9582         },
   9583         {
   9584           "vuid": "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter",
   9585           "text": " If <code>geometryCount</code> is not <code>0</code>, <code>pGeometries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>geometryCount</code> valid <code>VkGeometryNV</code> structures"
   9586         }
   9587       ]
   9588     },
   9589     "VkGeometryNV": {
   9590       "(VK_NV_ray_tracing)": [
   9591         {
   9592           "vuid": "VUID-VkGeometryNV-sType-sType",
   9593           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_NV</code>"
   9594         },
   9595         {
   9596           "vuid": "VUID-VkGeometryNV-pNext-pNext",
   9597           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   9598         },
   9599         {
   9600           "vuid": "VUID-VkGeometryNV-geometryType-parameter",
   9601           "text": " <code>geometryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkGeometryTypeNV\">VkGeometryTypeNV</a> value"
   9602         },
   9603         {
   9604           "vuid": "VUID-VkGeometryNV-geometry-parameter",
   9605           "text": " <code>geometry</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryDataNV</code> structure"
   9606         },
   9607         {
   9608           "vuid": "VUID-VkGeometryNV-flags-parameter",
   9609           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkGeometryFlagBitsNV\">VkGeometryFlagBitsNV</a> values"
   9610         }
   9611       ]
   9612     },
   9613     "VkGeometryDataNV": {
   9614       "(VK_NV_ray_tracing)": [
   9615         {
   9616           "vuid": "VUID-VkGeometryDataNV-triangles-parameter",
   9617           "text": " <code>triangles</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryTrianglesNV</code> structure"
   9618         },
   9619         {
   9620           "vuid": "VUID-VkGeometryDataNV-aabbs-parameter",
   9621           "text": " <code>aabbs</code> <strong class=\"purple\">must</strong> be a valid <code>VkGeometryAABBNV</code> structure"
   9622         }
   9623       ]
   9624     },
   9625     "VkGeometryTrianglesNV": {
   9626       "(VK_NV_ray_tracing)": [
   9627         {
   9628           "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02428",
   9629           "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>vertexData</code>"
   9630         },
   9631         {
   9632           "vuid": "VUID-VkGeometryTrianglesNV-vertexOffset-02429",
   9633           "text": " <code>vertexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the component size of <code>vertexFormat</code>"
   9634         },
   9635         {
   9636           "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-02430",
   9637           "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be one of <code>VK_FORMAT_R32G32B32_SFLOAT</code>, <code>VK_FORMAT_R32G32_SFLOAT</code>, <code>VK_FORMAT_R16G16B16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SFLOAT</code>, <code>VK_FORMAT_R16G16_SNORM</code>, or <code>VK_FORMAT_R16G16B16_SNORM</code>"
   9638         },
   9639         {
   9640           "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02431",
   9641           "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>indexData</code>"
   9642         },
   9643         {
   9644           "vuid": "VUID-VkGeometryTrianglesNV-indexOffset-02432",
   9645           "text": " <code>indexOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of <code>indexType</code>"
   9646         },
   9647         {
   9648           "vuid": "VUID-VkGeometryTrianglesNV-indexType-02433",
   9649           "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be <code>VK_INDEX_TYPE_UINT16</code>, <code>VK_INDEX_TYPE_UINT32</code>, or <code>VK_INDEX_TYPE_NONE_NV</code>"
   9650         },
   9651         {
   9652           "vuid": "VUID-VkGeometryTrianglesNV-indexData-02434",
   9653           "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>"
   9654         },
   9655         {
   9656           "vuid": "VUID-VkGeometryTrianglesNV-indexData-02435",
   9657           "text": " <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle if <code>indexType</code> is not <code>VK_INDEX_TYPE_NONE_NV</code>"
   9658         },
   9659         {
   9660           "vuid": "VUID-VkGeometryTrianglesNV-indexCount-02436",
   9661           "text": " <code>indexCount</code> <strong class=\"purple\">must</strong> be <code>0</code> if <code>indexType</code> is <code>VK_INDEX_TYPE_NONE_NV</code>"
   9662         },
   9663         {
   9664           "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02437",
   9665           "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>transformData</code>"
   9666         },
   9667         {
   9668           "vuid": "VUID-VkGeometryTrianglesNV-transformOffset-02438",
   9669           "text": " <code>transformOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>16</code>"
   9670         },
   9671         {
   9672           "vuid": "VUID-VkGeometryTrianglesNV-sType-sType",
   9673           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV</code>"
   9674         },
   9675         {
   9676           "vuid": "VUID-VkGeometryTrianglesNV-pNext-pNext",
   9677           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   9678         },
   9679         {
   9680           "vuid": "VUID-VkGeometryTrianglesNV-vertexData-parameter",
   9681           "text": " If <code>vertexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>vertexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   9682         },
   9683         {
   9684           "vuid": "VUID-VkGeometryTrianglesNV-vertexFormat-parameter",
   9685           "text": " <code>vertexFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   9686         },
   9687         {
   9688           "vuid": "VUID-VkGeometryTrianglesNV-indexData-parameter",
   9689           "text": " If <code>indexData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>indexData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   9690         },
   9691         {
   9692           "vuid": "VUID-VkGeometryTrianglesNV-indexType-parameter",
   9693           "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
   9694         },
   9695         {
   9696           "vuid": "VUID-VkGeometryTrianglesNV-transformData-parameter",
   9697           "text": " If <code>transformData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>transformData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   9698         },
   9699         {
   9700           "vuid": "VUID-VkGeometryTrianglesNV-commonparent",
   9701           "text": " Each of <code>indexData</code>, <code>transformData</code>, and <code>vertexData</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   9702         }
   9703       ]
   9704     },
   9705     "VkGeometryAABBNV": {
   9706       "(VK_NV_ray_tracing)": [
   9707         {
   9708           "vuid": "VUID-VkGeometryAABBNV-offset-02439",
   9709           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>aabbData</code>"
   9710         },
   9711         {
   9712           "vuid": "VUID-VkGeometryAABBNV-offset-02440",
   9713           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
   9714         },
   9715         {
   9716           "vuid": "VUID-VkGeometryAABBNV-stride-02441",
   9717           "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>8</code>"
   9718         },
   9719         {
   9720           "vuid": "VUID-VkGeometryAABBNV-sType-sType",
   9721           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV</code>"
   9722         },
   9723         {
   9724           "vuid": "VUID-VkGeometryAABBNV-pNext-pNext",
   9725           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   9726         },
   9727         {
   9728           "vuid": "VUID-VkGeometryAABBNV-aabbData-parameter",
   9729           "text": " If <code>aabbData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>aabbData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   9730         }
   9731       ]
   9732     },
   9733     "vkDestroyAccelerationStructureNV": {
   9734       "(VK_NV_ray_tracing)": [
   9735         {
   9736           "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02442",
   9737           "text": " All submitted commands that refer to <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have completed execution"
   9738         },
   9739         {
   9740           "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02443",
   9741           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   9742         },
   9743         {
   9744           "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-02444",
   9745           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>accelerationStructure</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   9746         },
   9747         {
   9748           "vuid": "VUID-vkDestroyAccelerationStructureNV-device-parameter",
   9749           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9750         },
   9751         {
   9752           "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parameter",
   9753           "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
   9754         },
   9755         {
   9756           "vuid": "VUID-vkDestroyAccelerationStructureNV-pAllocator-parameter",
   9757           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   9758         },
   9759         {
   9760           "vuid": "VUID-vkDestroyAccelerationStructureNV-accelerationStructure-parent",
   9761           "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   9762         }
   9763       ]
   9764     },
   9765     "vkGetAccelerationStructureMemoryRequirementsNV": {
   9766       "(VK_NV_ray_tracing)": [
   9767         {
   9768           "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-device-parameter",
   9769           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9770         },
   9771         {
   9772           "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pInfo-parameter",
   9773           "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureMemoryRequirementsInfoNV</code> structure"
   9774         },
   9775         {
   9776           "vuid": "VUID-vkGetAccelerationStructureMemoryRequirementsNV-pMemoryRequirements-parameter",
   9777           "text": " <code>pMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMemoryRequirements2KHR</code> structure"
   9778         }
   9779       ]
   9780     },
   9781     "VkAccelerationStructureMemoryRequirementsInfoNV": {
   9782       "(VK_NV_ray_tracing)": [
   9783         {
   9784           "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-sType-sType",
   9785           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV</code>"
   9786         },
   9787         {
   9788           "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-pNext-pNext",
   9789           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   9790         },
   9791         {
   9792           "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-type-parameter",
   9793           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkAccelerationStructureMemoryRequirementsTypeNV\">VkAccelerationStructureMemoryRequirementsTypeNV</a> value"
   9794         },
   9795         {
   9796           "vuid": "VUID-VkAccelerationStructureMemoryRequirementsInfoNV-accelerationStructure-parameter",
   9797           "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
   9798         }
   9799       ]
   9800     },
   9801     "vkBindAccelerationStructureMemoryNV": {
   9802       "(VK_NV_ray_tracing)": [
   9803         {
   9804           "vuid": "VUID-vkBindAccelerationStructureMemoryNV-device-parameter",
   9805           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9806         },
   9807         {
   9808           "vuid": "VUID-vkBindAccelerationStructureMemoryNV-pBindInfos-parameter",
   9809           "text": " <code>pBindInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindAccelerationStructureMemoryInfoNV</code> structures"
   9810         },
   9811         {
   9812           "vuid": "VUID-vkBindAccelerationStructureMemoryNV-bindInfoCount-arraylength",
   9813           "text": " <code>bindInfoCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   9814         }
   9815       ]
   9816     },
   9817     "VkBindAccelerationStructureMemoryInfoNV": {
   9818       "(VK_NV_ray_tracing)": [
   9819         {
   9820           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-02450",
   9821           "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> not already be backed by a memory object"
   9822         },
   9823         {
   9824           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02451",
   9825           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
   9826         },
   9827         {
   9828           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-02593",
   9829           "text": " <code>memory</code> <strong class=\"purple\">must</strong> have been allocated using one of the memory types allowed in the <code>memoryTypeBits</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
   9830         },
   9831         {
   9832           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memoryOffset-02594",
   9833           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be an integer multiple of the <code>alignment</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code>"
   9834         },
   9835         {
   9836           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-size-02595",
   9837           "text": " The <code>size</code> member of the <code>VkMemoryRequirements</code> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <code>accelerationStructure</code> and <code>type</code> of <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
   9838         },
   9839         {
   9840           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-sType-sType",
   9841           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV</code>"
   9842         },
   9843         {
   9844           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pNext-pNext",
   9845           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   9846         },
   9847         {
   9848           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-accelerationStructure-parameter",
   9849           "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
   9850         },
   9851         {
   9852           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-memory-parameter",
   9853           "text": " <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   9854         },
   9855         {
   9856           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-pDeviceIndices-parameter",
   9857           "text": " If <code>deviceIndexCount</code> is not <code>0</code>, <code>pDeviceIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>deviceIndexCount</code> <code>uint32_t</code> values"
   9858         },
   9859         {
   9860           "vuid": "VUID-VkBindAccelerationStructureMemoryInfoNV-commonparent",
   9861           "text": " Both of <code>accelerationStructure</code>, and <code>memory</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   9862         }
   9863       ]
   9864     },
   9865     "vkGetAccelerationStructureHandleNV": {
   9866       "(VK_NV_ray_tracing)": [
   9867         {
   9868           "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-02240",
   9869           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of the query, as described above"
   9870         },
   9871         {
   9872           "vuid": "VUID-vkGetAccelerationStructureHandleNV-device-parameter",
   9873           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9874         },
   9875         {
   9876           "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parameter",
   9877           "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
   9878         },
   9879         {
   9880           "vuid": "VUID-vkGetAccelerationStructureHandleNV-pData-parameter",
   9881           "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
   9882         },
   9883         {
   9884           "vuid": "VUID-vkGetAccelerationStructureHandleNV-dataSize-arraylength",
   9885           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   9886         },
   9887         {
   9888           "vuid": "VUID-vkGetAccelerationStructureHandleNV-accelerationStructure-parent",
   9889           "text": " <code>accelerationStructure</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   9890         }
   9891       ]
   9892     },
   9893     "vkCreateSampler": {
   9894       "core": [
   9895         {
   9896           "vuid": "VUID-vkCreateSampler-device-parameter",
   9897           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   9898         },
   9899         {
   9900           "vuid": "VUID-vkCreateSampler-pCreateInfo-parameter",
   9901           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerCreateInfo</code> structure"
   9902         },
   9903         {
   9904           "vuid": "VUID-vkCreateSampler-pAllocator-parameter",
   9905           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   9906         },
   9907         {
   9908           "vuid": "VUID-vkCreateSampler-pSampler-parameter",
   9909           "text": " <code>pSampler</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSampler</code> handle"
   9910         }
   9911       ]
   9912     },
   9913     "VkSamplerCreateInfo": {
   9914       "core": [
   9915         {
   9916           "vuid": "VUID-VkSamplerCreateInfo-mipLodBias-01069",
   9917           "text": " The absolute value of <code>mipLodBias</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerLodBias</code>"
   9918         },
   9919         {
   9920           "vuid": "VUID-VkSamplerCreateInfo-maxLod-01973",
   9921           "text": " <code>maxLod</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>minLod</code>"
   9922         },
   9923         {
   9924           "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01070",
   9925           "text": " If the <a href=\"#features-samplerAnisotropy\">anisotropic sampling</a> feature is not enabled, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   9926         },
   9927         {
   9928           "vuid": "VUID-VkSamplerCreateInfo-anisotropyEnable-01071",
   9929           "text": " If <code>anisotropyEnable</code> is <code>VK_TRUE</code>, <code>maxAnisotropy</code> <strong class=\"purple\">must</strong> be between <code>1.0</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxSamplerAnisotropy</code>, inclusive"
   9930         },
   9931         {
   9932           "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01072",
   9933           "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal"
   9934         },
   9935         {
   9936           "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01073",
   9937           "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>"
   9938         },
   9939         {
   9940           "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01074",
   9941           "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero"
   9942         },
   9943         {
   9944           "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01075",
   9945           "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>"
   9946         },
   9947         {
   9948           "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01076",
   9949           "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   9950         },
   9951         {
   9952           "vuid": "VUID-VkSamplerCreateInfo-unnormalizedCoordinates-01077",
   9953           "text": " If <code>unnormalizedCoordinates</code> is <code>VK_TRUE</code>, <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   9954         },
   9955         {
   9956           "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01078",
   9957           "text": " If any of <code>addressModeU</code>, <code>addressModeV</code> or <code>addressModeW</code> are <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>, <code>borderColor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBorderColor\">VkBorderColor</a> value"
   9958         },
   9959         {
   9960           "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01079",
   9961           "text": " If the <code><a href=\"#VK_KHR_sampler_mirror_clamp_to_edge\">VK_KHR_sampler_mirror_clamp_to_edge</a></code> extension is not enabled, <code>addressModeU</code>, <code>addressModeV</code> and <code>addressModeW</code> <strong class=\"purple\">must</strong> not be <code>VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE</code>"
   9962         },
   9963         {
   9964           "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01080",
   9965           "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
   9966         },
   9967         {
   9968           "vuid": "VUID-VkSamplerCreateInfo-sType-sType",
   9969           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO</code>"
   9970         },
   9971         {
   9972           "vuid": "VUID-VkSamplerCreateInfo-pNext-pNext",
   9973           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> or <a href=\"#VkSamplerYcbcrConversionInfo\">VkSamplerYcbcrConversionInfo</a>"
   9974         },
   9975         {
   9976           "vuid": "VUID-VkSamplerCreateInfo-sType-unique",
   9977           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   9978         },
   9979         {
   9980           "vuid": "VUID-VkSamplerCreateInfo-flags-parameter",
   9981           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSamplerCreateFlagBits\">VkSamplerCreateFlagBits</a> values"
   9982         },
   9983         {
   9984           "vuid": "VUID-VkSamplerCreateInfo-magFilter-parameter",
   9985           "text": " <code>magFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
   9986         },
   9987         {
   9988           "vuid": "VUID-VkSamplerCreateInfo-minFilter-parameter",
   9989           "text": " <code>minFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
   9990         },
   9991         {
   9992           "vuid": "VUID-VkSamplerCreateInfo-mipmapMode-parameter",
   9993           "text": " <code>mipmapMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerMipmapMode\">VkSamplerMipmapMode</a> value"
   9994         },
   9995         {
   9996           "vuid": "VUID-VkSamplerCreateInfo-addressModeU-parameter",
   9997           "text": " <code>addressModeU</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
   9998         },
   9999         {
   10000           "vuid": "VUID-VkSamplerCreateInfo-addressModeV-parameter",
   10001           "text": " <code>addressModeV</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
   10002         },
   10003         {
   10004           "vuid": "VUID-VkSamplerCreateInfo-addressModeW-parameter",
   10005           "text": " <code>addressModeW</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> value"
   10006         }
   10007       ],
   10008       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   10009         {
   10010           "vuid": "VUID-VkSamplerCreateInfo-minFilter-01645",
   10011           "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled and <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT</code> is not set for the format, <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal to the sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion&#8217;s <code>chromaFilter</code>"
   10012         },
   10013         {
   10014           "vuid": "VUID-VkSamplerCreateInfo-addressModeU-01646",
   10015           "text": " If <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled, <code>addressModeU</code>, <code>addressModeV</code>, and <code>addressModeW</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>, and <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   10016         }
   10017       ],
   10018       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_EXT_sampler_filter_minmax)": [
   10019         {
   10020           "vuid": "VUID-VkSamplerCreateInfo-None-01647",
   10021           "text": " The sampler reduction mode <strong class=\"purple\">must</strong> be set to <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code> if <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> is enabled"
   10022         }
   10023       ],
   10024       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   10025         {
   10026           "vuid": "VUID-VkSamplerCreateInfo-magFilter-01081",
   10027           "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   10028         }
   10029       ],
   10030       "(VK_IMG_filter_cubic+VK_EXT_sampler_filter_minmax)+!(VK_EXT_filter_cubic)": [
   10031         {
   10032           "vuid": "VUID-VkSamplerCreateInfo-magFilter-01422",
   10033           "text": " If either <code>magFilter</code> or <code>minFilter</code> is <code>VK_FILTER_CUBIC_EXT</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>"
   10034         }
   10035       ],
   10036       "(VK_EXT_sampler_filter_minmax)": [
   10037         {
   10038           "vuid": "VUID-VkSamplerCreateInfo-compareEnable-01423",
   10039           "text": " If <code>compareEnable</code> is <code>VK_TRUE</code>, the <code>reductionMode</code> member of <a href=\"#VkSamplerReductionModeCreateInfoEXT\">VkSamplerReductionModeCreateInfoEXT</a> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT</code>"
   10040         }
   10041       ],
   10042       "(VK_EXT_fragment_density_map)": [
   10043         {
   10044           "vuid": "VUID-VkSamplerCreateInfo-flags-02574",
   10045           "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>minFilter</code> and <code>magFilter</code> <strong class=\"purple\">must</strong> be equal."
   10046         },
   10047         {
   10048           "vuid": "VUID-VkSamplerCreateInfo-flags-02575",
   10049           "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>mipmapMode</code> <strong class=\"purple\">must</strong> be <code>VK_SAMPLER_MIPMAP_MODE_NEAREST</code>."
   10050         },
   10051         {
   10052           "vuid": "VUID-VkSamplerCreateInfo-flags-02576",
   10053           "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>minLod</code> and <code>maxLod</code> <strong class=\"purple\">must</strong> be zero."
   10054         },
   10055         {
   10056           "vuid": "VUID-VkSamplerCreateInfo-flags-02577",
   10057           "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>addressModeU</code> and <code>addressModeV</code> <strong class=\"purple\">must</strong> each be either <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code> or <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER</code>."
   10058         },
   10059         {
   10060           "vuid": "VUID-VkSamplerCreateInfo-flags-02578",
   10061           "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>anisotropyEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>."
   10062         },
   10063         {
   10064           "vuid": "VUID-VkSamplerCreateInfo-flags-02579",
   10065           "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>compareEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>."
   10066         },
   10067         {
   10068           "vuid": "VUID-VkSamplerCreateInfo-flags-02580",
   10069           "text": " If <code>flags</code> includes <code>VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT</code>, then <code>unnormalizedCoordinates</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>."
   10070         }
   10071       ]
   10072     },
   10073     "VkSamplerReductionModeCreateInfoEXT": {
   10074       "(VK_EXT_sampler_filter_minmax)": [
   10075         {
   10076           "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-sType-sType",
   10077           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT</code>"
   10078         },
   10079         {
   10080           "vuid": "VUID-VkSamplerReductionModeCreateInfoEXT-reductionMode-parameter",
   10081           "text": " <code>reductionMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerReductionModeEXT\">VkSamplerReductionModeEXT</a> value"
   10082         }
   10083       ]
   10084     },
   10085     "vkDestroySampler": {
   10086       "core": [
   10087         {
   10088           "vuid": "VUID-vkDestroySampler-sampler-01082",
   10089           "text": " All submitted commands that refer to <code>sampler</code> <strong class=\"purple\">must</strong> have completed execution"
   10090         },
   10091         {
   10092           "vuid": "VUID-vkDestroySampler-sampler-01083",
   10093           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   10094         },
   10095         {
   10096           "vuid": "VUID-vkDestroySampler-sampler-01084",
   10097           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>sampler</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   10098         },
   10099         {
   10100           "vuid": "VUID-vkDestroySampler-device-parameter",
   10101           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10102         },
   10103         {
   10104           "vuid": "VUID-vkDestroySampler-sampler-parameter",
   10105           "text": " If <code>sampler</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sampler</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> handle"
   10106         },
   10107         {
   10108           "vuid": "VUID-vkDestroySampler-pAllocator-parameter",
   10109           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10110         },
   10111         {
   10112           "vuid": "VUID-vkDestroySampler-sampler-parent",
   10113           "text": " If <code>sampler</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   10114         }
   10115       ]
   10116     },
   10117     "VkSamplerYcbcrConversionInfo": {
   10118       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   10119         {
   10120           "vuid": "VUID-VkSamplerYcbcrConversionInfo-sType-sType",
   10121           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO</code>"
   10122         },
   10123         {
   10124           "vuid": "VUID-VkSamplerYcbcrConversionInfo-conversion-parameter",
   10125           "text": " <code>conversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle"
   10126         }
   10127       ]
   10128     },
   10129     "vkCreateSamplerYcbcrConversion": {
   10130       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   10131         {
   10132           "vuid": "VUID-vkCreateSamplerYcbcrConversion-None-01648",
   10133           "text": " The <a href=\"#features-sampler-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion feature</a> <strong class=\"purple\">must</strong> be enabled"
   10134         },
   10135         {
   10136           "vuid": "VUID-vkCreateSamplerYcbcrConversion-device-parameter",
   10137           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10138         },
   10139         {
   10140           "vuid": "VUID-vkCreateSamplerYcbcrConversion-pCreateInfo-parameter",
   10141           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSamplerYcbcrConversionCreateInfo</code> structure"
   10142         },
   10143         {
   10144           "vuid": "VUID-vkCreateSamplerYcbcrConversion-pAllocator-parameter",
   10145           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10146         },
   10147         {
   10148           "vuid": "VUID-vkCreateSamplerYcbcrConversion-pYcbcrConversion-parameter",
   10149           "text": " <code>pYcbcrConversion</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSamplerYcbcrConversion</code> handle"
   10150         }
   10151       ]
   10152     },
   10153     "VkSamplerYcbcrConversionCreateInfo": {
   10154       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+!(VK_ANDROID_external_memory_android_hardware_buffer)": [
   10155         {
   10156           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01649",
   10157           "text": " <code>format</code> <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>"
   10158         }
   10159       ],
   10160       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
   10161         {
   10162           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01904",
   10163           "text": " If an external format conversion is being created, <code>format</code> <strong class=\"purple\">must</strong> be <code>VK_FORMAT_UNDEFINED</code>, otherwise it <strong class=\"purple\">must</strong> not be <code>VK_FORMAT_UNDEFINED</code>."
   10164         }
   10165       ],
   10166       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   10167         {
   10168           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01650",
   10169           "text": " <code>format</code> <strong class=\"purple\">must</strong> support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code> or <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>"
   10170         },
   10171         {
   10172           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651",
   10173           "text": " If the format does not support <code>VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_COSITED_EVEN</code>"
   10174         },
   10175         {
   10176           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652",
   10177           "text": " If the format does not support <code>VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT</code>, <code>xChromaOffset</code> and <code>yChromaOffset</code> <strong class=\"purple\">must</strong> not be <code>VK_CHROMA_LOCATION_MIDPOINT</code>"
   10178         },
   10179         {
   10180           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-01653",
   10181           "text": " <code>format</code> <strong class=\"purple\">must</strong> represent unsigned normalized values (i.e. the format must be a <code>UNORM</code> format)"
   10182         },
   10183         {
   10184           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02581",
   10185           "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.g</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>"
   10186         },
   10187         {
   10188           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02582",
   10189           "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.a</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>, <code>VK_COMPONENT_SWIZZLE_ONE</code>, or <code>VK_COMPONENT_SWIZZLE_ZERO</code>"
   10190         },
   10191         {
   10192           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02583",
   10193           "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.r</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> or <code>VK_COMPONENT_SWIZZLE_B</code>"
   10194         },
   10195         {
   10196           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02584",
   10197           "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, then <code>components.b</code> <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code> or <code>VK_COMPONENT_SWIZZLE_R</code>"
   10198         },
   10199         {
   10200           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-02585",
   10201           "text": " If the format has a <code>_422</code> or <code>_420</code> suffix, and if either <code>components.r</code> or <code>components.b</code> is <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>, both values <strong class=\"purple\">must</strong> be <code>VK_COMPONENT_SWIZZLE_IDENTITY</code>"
   10202         },
   10203         {
   10204           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655",
   10205           "text": " If <code>ycbcrModel</code> is not <code>VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY</code>, then <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> correspond to channels of the <code>format</code>; that is, <code>components.r</code>, <code>components.g</code>, and <code>components.b</code> <strong class=\"purple\">must</strong> not be <code>VK_COMPONENT_SWIZZLE_ZERO</code> or <code>VK_COMPONENT_SWIZZLE_ONE</code>, and <strong class=\"purple\">must</strong> not correspond to a channel which contains zero or one as a consequence of <a href=\"#textures-conversion-to-rgba\">conversion to RGBA</a>"
   10206         },
   10207         {
   10208           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656",
   10209           "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT</code>, <code>forceExplicitReconstruction</code> <strong class=\"purple\">must</strong> be FALSE"
   10210         },
   10211         {
   10212           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657",
   10213           "text": " If the format does not support <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT</code>, <code>chromaFilter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>"
   10214         },
   10215         {
   10216           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType",
   10217           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO</code>"
   10218         },
   10219         {
   10220           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext",
   10221           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkExternalFormatANDROID\">VkExternalFormatANDROID</a>"
   10222         },
   10223         {
   10224           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter",
   10225           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   10226         },
   10227         {
   10228           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-parameter",
   10229           "text": " <code>ycbcrModel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrModelConversion\">VkSamplerYcbcrModelConversion</a> value"
   10230         },
   10231         {
   10232           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrRange-parameter",
   10233           "text": " <code>ycbcrRange</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSamplerYcbcrRange\">VkSamplerYcbcrRange</a> value"
   10234         },
   10235         {
   10236           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter",
   10237           "text": " <code>components</code> <strong class=\"purple\">must</strong> be a valid <code>VkComponentMapping</code> structure"
   10238         },
   10239         {
   10240           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter",
   10241           "text": " <code>xChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
   10242         },
   10243         {
   10244           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter",
   10245           "text": " <code>yChromaOffset</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkChromaLocation\">VkChromaLocation</a> value"
   10246         },
   10247         {
   10248           "vuid": "VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter",
   10249           "text": " <code>chromaFilter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
   10250         }
   10251       ]
   10252     },
   10253     "vkDestroySamplerYcbcrConversion": {
   10254       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   10255         {
   10256           "vuid": "VUID-vkDestroySamplerYcbcrConversion-device-parameter",
   10257           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10258         },
   10259         {
   10260           "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parameter",
   10261           "text": " If <code>ycbcrConversion</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>ycbcrConversion</code> <strong class=\"purple\">must</strong> be a valid <code>VkSamplerYcbcrConversion</code> handle"
   10262         },
   10263         {
   10264           "vuid": "VUID-vkDestroySamplerYcbcrConversion-pAllocator-parameter",
   10265           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10266         },
   10267         {
   10268           "vuid": "VUID-vkDestroySamplerYcbcrConversion-ycbcrConversion-parent",
   10269           "text": " If <code>ycbcrConversion</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   10270         }
   10271       ]
   10272     },
   10273     "vkCreateDescriptorSetLayout": {
   10274       "core": [
   10275         {
   10276           "vuid": "VUID-vkCreateDescriptorSetLayout-device-parameter",
   10277           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10278         },
   10279         {
   10280           "vuid": "VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter",
   10281           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure"
   10282         },
   10283         {
   10284           "vuid": "VUID-vkCreateDescriptorSetLayout-pAllocator-parameter",
   10285           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10286         },
   10287         {
   10288           "vuid": "VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter",
   10289           "text": " <code>pSetLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayout</code> handle"
   10290         }
   10291       ]
   10292     },
   10293     "VkDescriptorSetLayoutCreateInfo": {
   10294       "core": [
   10295         {
   10296           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-binding-00279",
   10297           "text": " The <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a>::<code>binding</code> members of the elements of the <code>pBindings</code> array <strong class=\"purple\">must</strong> each have different values."
   10298         },
   10299         {
   10300           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-sType-sType",
   10301           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO</code>"
   10302         },
   10303         {
   10304           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pNext-pNext",
   10305           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetLayoutBindingFlagsCreateInfoEXT\">VkDescriptorSetLayoutBindingFlagsCreateInfoEXT</a>"
   10306         },
   10307         {
   10308           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-parameter",
   10309           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorSetLayoutCreateFlagBits\">VkDescriptorSetLayoutCreateFlagBits</a> values"
   10310         },
   10311         {
   10312           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-pBindings-parameter",
   10313           "text": " If <code>bindingCount</code> is not <code>0</code>, <code>pBindings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkDescriptorSetLayoutBinding</code> structures"
   10314         }
   10315       ],
   10316       "(VK_KHR_push_descriptor)": [
   10317         {
   10318           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00280",
   10319           "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
   10320         },
   10321         {
   10322           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-00281",
   10323           "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then the total number of elements of all bindings <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDevicePushDescriptorPropertiesKHR\">VkPhysicalDevicePushDescriptorPropertiesKHR</a>::<code>maxPushDescriptors</code>"
   10324         }
   10325       ],
   10326       "(VK_KHR_push_descriptor)+(VK_EXT_inline_uniform_block)": [
   10327         {
   10328           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-02208",
   10329           "text": " If <code>flags</code> contains <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindings</code> <strong class=\"purple\">must</strong> not have a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>"
   10330         }
   10331       ],
   10332       "(VK_EXT_descriptor_indexing)": [
   10333         {
   10334           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-flags-03000",
   10335           "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, <code>flags</code> <strong class=\"purple\">must</strong> include <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code>"
   10336         },
   10337         {
   10338           "vuid": "VUID-VkDescriptorSetLayoutCreateInfo-descriptorType-03001",
   10339           "text": " If any binding has the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> bit set, then all bindings <strong class=\"purple\">must</strong> not have <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
   10340         }
   10341       ]
   10342     },
   10343     "VkDescriptorSetLayoutBinding": {
   10344       "core": [
   10345         {
   10346           "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-00282",
   10347           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>descriptorCount</code> is not <code>0</code> and <code>pImmutableSamplers</code> is not <code>NULL</code>, <code>pImmutableSamplers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkSampler</code> handles"
   10348         },
   10349         {
   10350           "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorCount-00283",
   10351           "text": " If <code>descriptorCount</code> is not <code>0</code>, <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
   10352         },
   10353         {
   10354           "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-01510",
   10355           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> and <code>descriptorCount</code> is not <code>0</code>, then <code>stageFlags</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>VK_SHADER_STAGE_FRAGMENT_BIT</code>"
   10356         },
   10357         {
   10358           "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-parameter",
   10359           "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
   10360         }
   10361       ],
   10362       "(VK_EXT_inline_uniform_block)": [
   10363         {
   10364           "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02209",
   10365           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   10366         },
   10367         {
   10368           "vuid": "VUID-VkDescriptorSetLayoutBinding-descriptorType-02210",
   10369           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxInlineUniformBlockSize</code>"
   10370         }
   10371       ]
   10372     },
   10373     "VkDescriptorSetLayoutBindingFlagsCreateInfoEXT": {
   10374       "(VK_EXT_descriptor_indexing)": [
   10375         {
   10376           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-bindingCount-03002",
   10377           "text": " If <code>bindingCount</code> is not zero, <code>bindingCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>bindingCount</code>"
   10378         },
   10379         {
   10380           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03004",
   10381           "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, then all other elements of <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>pBindings</code> <strong class=\"purple\">must</strong> have a smaller value of <code>binding</code>"
   10382         },
   10383         {
   10384           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformBufferUpdateAfterBind-03005",
   10385           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
   10386         },
   10387         {
   10388           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingSampledImageUpdateAfterBind-03006",
   10389           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingSampledImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, or <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
   10390         },
   10391         {
   10392           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageImageUpdateAfterBind-03007",
   10393           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageImageUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
   10394         },
   10395         {
   10396           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageBufferUpdateAfterBind-03008",
   10397           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
   10398         },
   10399         {
   10400           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUniformTexelBufferUpdateAfterBind-03009",
   10401           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUniformTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
   10402         },
   10403         {
   10404           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingStorageTexelBufferUpdateAfterBind-03010",
   10405           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingStorageTexelBufferUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
   10406         },
   10407         {
   10408           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-None-03011",
   10409           "text": " All bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
   10410         },
   10411         {
   10412           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingUpdateUnusedWhilePending-03012",
   10413           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingUpdateUnusedWhilePending</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>"
   10414         },
   10415         {
   10416           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingPartiallyBound-03013",
   10417           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingPartiallyBound</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT</code>"
   10418         },
   10419         {
   10420           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingVariableDescriptorCount-03014",
   10421           "text": " If <a href=\"#VkPhysicalDeviceDescriptorIndexingFeaturesEXT\">VkPhysicalDeviceDescriptorIndexingFeaturesEXT</a>::<code>descriptorBindingVariableDescriptorCount</code> is not enabled, all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>"
   10422         },
   10423         {
   10424           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-03015",
   10425           "text": " If an element of <code>pBindingFlags</code> includes <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>, that element&#8217;s <code>descriptorType</code> <strong class=\"purple\">must</strong> not be <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>"
   10426         },
   10427         {
   10428           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-sType-sType",
   10429           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT</code>"
   10430         },
   10431         {
   10432           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-pBindingFlags-parameter",
   10433           "text": " If <code>bindingCount</code> is not <code>0</code>, and <code>pBindingFlags</code> is not <code>NULL</code>, <code>pBindingFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid combinations of <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a> values"
   10434         }
   10435       ],
   10436       "(VK_EXT_descriptor_indexing)+(VK_KHR_push_descriptor)": [
   10437         {
   10438           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-flags-03003",
   10439           "text": " If <a href=\"#VkDescriptorSetLayoutCreateInfo\">VkDescriptorSetLayoutCreateInfo</a>::<code>flags</code> includes <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>, then all elements of <code>pBindingFlags</code> <strong class=\"purple\">must</strong> not include <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>, <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code>, or <code>VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT</code>"
   10440         }
   10441       ],
   10442       "(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
   10443         {
   10444           "vuid": "VUID-VkDescriptorSetLayoutBindingFlagsCreateInfoEXT-descriptorBindingInlineUniformBlockUpdateAfterBind-02211",
   10445           "text": " If <a href=\"#VkPhysicalDeviceInlineUniformBlockFeaturesEXT\">VkPhysicalDeviceInlineUniformBlockFeaturesEXT</a>::<code>descriptorBindingInlineUniformBlockUpdateAfterBind</code> is not enabled, all bindings with descriptor type <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> <strong class=\"purple\">must</strong> not use <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code>"
   10446         }
   10447       ]
   10448     },
   10449     "vkGetDescriptorSetLayoutSupport": {
   10450       "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
   10451         {
   10452           "vuid": "VUID-vkGetDescriptorSetLayoutSupport-device-parameter",
   10453           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10454         },
   10455         {
   10456           "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pCreateInfo-parameter",
   10457           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetLayoutCreateInfo</code> structure"
   10458         },
   10459         {
   10460           "vuid": "VUID-vkGetDescriptorSetLayoutSupport-pSupport-parameter",
   10461           "text": " <code>pSupport</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorSetLayoutSupport</code> structure"
   10462         }
   10463       ]
   10464     },
   10465     "VkDescriptorSetLayoutSupport": {
   10466       "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
   10467         {
   10468           "vuid": "VUID-VkDescriptorSetLayoutSupport-sType-sType",
   10469           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT</code>"
   10470         },
   10471         {
   10472           "vuid": "VUID-VkDescriptorSetLayoutSupport-pNext-pNext",
   10473           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountLayoutSupportEXT\">VkDescriptorSetVariableDescriptorCountLayoutSupportEXT</a>"
   10474         }
   10475       ]
   10476     },
   10477     "VkDescriptorSetVariableDescriptorCountLayoutSupportEXT": {
   10478       "(VK_EXT_descriptor_indexing)": [
   10479         {
   10480           "vuid": "VUID-VkDescriptorSetVariableDescriptorCountLayoutSupportEXT-sType-sType",
   10481           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT</code>"
   10482         }
   10483       ]
   10484     },
   10485     "vkDestroyDescriptorSetLayout": {
   10486       "core": [
   10487         {
   10488           "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00284",
   10489           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   10490         },
   10491         {
   10492           "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-00285",
   10493           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   10494         },
   10495         {
   10496           "vuid": "VUID-vkDestroyDescriptorSetLayout-device-parameter",
   10497           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10498         },
   10499         {
   10500           "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parameter",
   10501           "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
   10502         },
   10503         {
   10504           "vuid": "VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter",
   10505           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10506         },
   10507         {
   10508           "vuid": "VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent",
   10509           "text": " If <code>descriptorSetLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   10510         }
   10511       ]
   10512     },
   10513     "vkCreatePipelineLayout": {
   10514       "core": [
   10515         {
   10516           "vuid": "VUID-vkCreatePipelineLayout-device-parameter",
   10517           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10518         },
   10519         {
   10520           "vuid": "VUID-vkCreatePipelineLayout-pCreateInfo-parameter",
   10521           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPipelineLayoutCreateInfo</code> structure"
   10522         },
   10523         {
   10524           "vuid": "VUID-vkCreatePipelineLayout-pAllocator-parameter",
   10525           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10526         },
   10527         {
   10528           "vuid": "VUID-vkCreatePipelineLayout-pPipelineLayout-parameter",
   10529           "text": " <code>pPipelineLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPipelineLayout</code> handle"
   10530         }
   10531       ]
   10532     },
   10533     "VkPipelineLayoutCreateInfo": {
   10534       "core": [
   10535         {
   10536           "vuid": "VUID-VkPipelineLayoutCreateInfo-setLayoutCount-00286",
   10537           "text": " <code>setLayoutCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxBoundDescriptorSets</code>"
   10538         },
   10539         {
   10540           "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-00292",
   10541           "text": " Any two elements of <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> not include the same stage in <code>stageFlags</code>"
   10542         },
   10543         {
   10544           "vuid": "VUID-VkPipelineLayoutCreateInfo-sType-sType",
   10545           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO</code>"
   10546         },
   10547         {
   10548           "vuid": "VUID-VkPipelineLayoutCreateInfo-pNext-pNext",
   10549           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   10550         },
   10551         {
   10552           "vuid": "VUID-VkPipelineLayoutCreateInfo-flags-zerobitmask",
   10553           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   10554         },
   10555         {
   10556           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-parameter",
   10557           "text": " If <code>setLayoutCount</code> is not <code>0</code>, <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>setLayoutCount</code> valid <code>VkDescriptorSetLayout</code> handles"
   10558         },
   10559         {
   10560           "vuid": "VUID-VkPipelineLayoutCreateInfo-pPushConstantRanges-parameter",
   10561           "text": " If <code>pushConstantRangeCount</code> is not <code>0</code>, <code>pPushConstantRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pushConstantRangeCount</code> valid <code>VkPushConstantRange</code> structures"
   10562         }
   10563       ],
   10564       "!(VK_EXT_descriptor_indexing)": [
   10565         {
   10566           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00287",
   10567           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>"
   10568         },
   10569         {
   10570           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00288",
   10571           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>"
   10572         },
   10573         {
   10574           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00289",
   10575           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>"
   10576         },
   10577         {
   10578           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00290",
   10579           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
   10580         },
   10581         {
   10582           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00291",
   10583           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>"
   10584         },
   10585         {
   10586           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01676",
   10587           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>"
   10588         },
   10589         {
   10590           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01677",
   10591           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>"
   10592         },
   10593         {
   10594           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01678",
   10595           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>"
   10596         },
   10597         {
   10598           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01679",
   10599           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>"
   10600         },
   10601         {
   10602           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01680",
   10603           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>"
   10604         },
   10605         {
   10606           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01681",
   10607           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>"
   10608         },
   10609         {
   10610           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01682",
   10611           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>"
   10612         },
   10613         {
   10614           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01683",
   10615           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>"
   10616         },
   10617         {
   10618           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-01684",
   10619           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>"
   10620         }
   10621       ],
   10622       "!(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
   10623         {
   10624           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02212",
   10625           "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>"
   10626         },
   10627         {
   10628           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02213",
   10629           "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>"
   10630         }
   10631       ],
   10632       "(VK_EXT_descriptor_indexing)": [
   10633         {
   10634           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03016",
   10635           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSamplers</code>"
   10636         },
   10637         {
   10638           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03017",
   10639           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorUniformBuffers</code>"
   10640         },
   10641         {
   10642           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03018",
   10643           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageBuffers</code>"
   10644         },
   10645         {
   10646           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03019",
   10647           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorSampledImages</code>"
   10648         },
   10649         {
   10650           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03020",
   10651           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorStorageImages</code>"
   10652         },
   10653         {
   10654           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03021",
   10655           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPerStageDescriptorInputAttachments</code>"
   10656         },
   10657         {
   10658           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03022",
   10659           "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSamplers</code>"
   10660         },
   10661         {
   10662           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03023",
   10663           "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindUniformBuffers</code>"
   10664         },
   10665         {
   10666           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03024",
   10667           "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> and <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageBuffers</code>"
   10668         },
   10669         {
   10670           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03025",
   10671           "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindSampledImages</code>"
   10672         },
   10673         {
   10674           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03026",
   10675           "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindStorageImages</code>"
   10676         },
   10677         {
   10678           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03027",
   10679           "text": " The total number of descriptors with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInputAttachments</code>"
   10680         },
   10681         {
   10682           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03028",
   10683           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSamplers</code>"
   10684         },
   10685         {
   10686           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03029",
   10687           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffers</code>"
   10688         },
   10689         {
   10690           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03030",
   10691           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetUniformBuffersDynamic</code>"
   10692         },
   10693         {
   10694           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03031",
   10695           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffers</code>"
   10696         },
   10697         {
   10698           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03032",
   10699           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageBuffersDynamic</code>"
   10700         },
   10701         {
   10702           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03033",
   10703           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetSampledImages</code>"
   10704         },
   10705         {
   10706           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03034",
   10707           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetStorageImages</code>"
   10708         },
   10709         {
   10710           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-03035",
   10711           "text": " The total number of descriptors in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDescriptorSetInputAttachments</code>"
   10712         },
   10713         {
   10714           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03036",
   10715           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> and <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSamplers</code>"
   10716         },
   10717         {
   10718           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03037",
   10719           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffers</code>"
   10720         },
   10721         {
   10722           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03038",
   10723           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindUniformBuffersDynamic</code>"
   10724         },
   10725         {
   10726           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03039",
   10727           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffers</code>"
   10728         },
   10729         {
   10730           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03040",
   10731           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageBuffersDynamic</code>"
   10732         },
   10733         {
   10734           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03041",
   10735           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindSampledImages</code>"
   10736         },
   10737         {
   10738           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03042",
   10739           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, and <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindStorageImages</code>"
   10740         },
   10741         {
   10742           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-03043",
   10743           "text": " The total number of descriptors of the type <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceDescriptorIndexingPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInputAttachments</code>"
   10744         }
   10745       ],
   10746       "(VK_EXT_descriptor_indexing)+(VK_EXT_inline_uniform_block)": [
   10747         {
   10748           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02214",
   10749           "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorInlineUniformBlocks</code>"
   10750         },
   10751         {
   10752           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02215",
   10753           "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible to any given shader stage across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks</code>"
   10754         },
   10755         {
   10756           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02216",
   10757           "text": " The total number of bindings in descriptor set layouts created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetInlineUniformBlocks</code>"
   10758         },
   10759         {
   10760           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02217",
   10761           "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceInlineUniformBlockPropertiesEXT</code>::<code>maxDescriptorSetUpdateAfterBindInlineUniformBlocks</code>"
   10762         }
   10763       ],
   10764       "(VK_KHR_push_descriptor)": [
   10765         {
   10766           "vuid": "VUID-VkPipelineLayoutCreateInfo-pSetLayouts-00293",
   10767           "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not contain more than one descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set"
   10768         }
   10769       ],
   10770       "(VK_NV_ray_tracing)": [
   10771         {
   10772           "vuid": "VUID-VkPipelineLayoutCreateInfo-descriptorType-02381",
   10773           "text": " The total number of bindings with a <code>descriptorType</code> of <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code> accessible across all shader stages and across all elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxDescriptorSetAccelerationStructures</code>"
   10774         }
   10775       ]
   10776     },
   10777     "VkPushConstantRange": {
   10778       "core": [
   10779         {
   10780           "vuid": "VUID-VkPushConstantRange-offset-00294",
   10781           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
   10782         },
   10783         {
   10784           "vuid": "VUID-VkPushConstantRange-offset-00295",
   10785           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   10786         },
   10787         {
   10788           "vuid": "VUID-VkPushConstantRange-size-00296",
   10789           "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   10790         },
   10791         {
   10792           "vuid": "VUID-VkPushConstantRange-size-00297",
   10793           "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   10794         },
   10795         {
   10796           "vuid": "VUID-VkPushConstantRange-size-00298",
   10797           "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>"
   10798         },
   10799         {
   10800           "vuid": "VUID-VkPushConstantRange-stageFlags-parameter",
   10801           "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
   10802         },
   10803         {
   10804           "vuid": "VUID-VkPushConstantRange-stageFlags-requiredbitmask",
   10805           "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   10806         }
   10807       ]
   10808     },
   10809     "vkDestroyPipelineLayout": {
   10810       "core": [
   10811         {
   10812           "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00299",
   10813           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   10814         },
   10815         {
   10816           "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-00300",
   10817           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>pipelineLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   10818         },
   10819         {
   10820           "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-02004",
   10821           "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> not have been passed to any <code>vkCmd*</code> command for any command buffers that are still in the <a href=\"#commandbuffers-lifecycle\">recording state</a> when <code>vkDestroyPipelineLayout</code> is called"
   10822         },
   10823         {
   10824           "vuid": "VUID-vkDestroyPipelineLayout-device-parameter",
   10825           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10826         },
   10827         {
   10828           "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parameter",
   10829           "text": " If <code>pipelineLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   10830         },
   10831         {
   10832           "vuid": "VUID-vkDestroyPipelineLayout-pAllocator-parameter",
   10833           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10834         },
   10835         {
   10836           "vuid": "VUID-vkDestroyPipelineLayout-pipelineLayout-parent",
   10837           "text": " If <code>pipelineLayout</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   10838         }
   10839       ]
   10840     },
   10841     "vkCreateDescriptorPool": {
   10842       "core": [
   10843         {
   10844           "vuid": "VUID-vkCreateDescriptorPool-device-parameter",
   10845           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10846         },
   10847         {
   10848           "vuid": "VUID-vkCreateDescriptorPool-pCreateInfo-parameter",
   10849           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorPoolCreateInfo</code> structure"
   10850         },
   10851         {
   10852           "vuid": "VUID-vkCreateDescriptorPool-pAllocator-parameter",
   10853           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10854         },
   10855         {
   10856           "vuid": "VUID-vkCreateDescriptorPool-pDescriptorPool-parameter",
   10857           "text": " <code>pDescriptorPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorPool</code> handle"
   10858         }
   10859       ]
   10860     },
   10861     "VkDescriptorPoolCreateInfo": {
   10862       "core": [
   10863         {
   10864           "vuid": "VUID-VkDescriptorPoolCreateInfo-maxSets-00301",
   10865           "text": " <code>maxSets</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   10866         },
   10867         {
   10868           "vuid": "VUID-VkDescriptorPoolCreateInfo-sType-sType",
   10869           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO</code>"
   10870         },
   10871         {
   10872           "vuid": "VUID-VkDescriptorPoolCreateInfo-pNext-pNext",
   10873           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorPoolInlineUniformBlockCreateInfoEXT\">VkDescriptorPoolInlineUniformBlockCreateInfoEXT</a>"
   10874         },
   10875         {
   10876           "vuid": "VUID-VkDescriptorPoolCreateInfo-flags-parameter",
   10877           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDescriptorPoolCreateFlagBits\">VkDescriptorPoolCreateFlagBits</a> values"
   10878         },
   10879         {
   10880           "vuid": "VUID-VkDescriptorPoolCreateInfo-pPoolSizes-parameter",
   10881           "text": " <code>pPoolSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>poolSizeCount</code> valid <code>VkDescriptorPoolSize</code> structures"
   10882         },
   10883         {
   10884           "vuid": "VUID-VkDescriptorPoolCreateInfo-poolSizeCount-arraylength",
   10885           "text": " <code>poolSizeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   10886         }
   10887       ]
   10888     },
   10889     "VkDescriptorPoolInlineUniformBlockCreateInfoEXT": {
   10890       "(VK_EXT_inline_uniform_block)": [
   10891         {
   10892           "vuid": "VUID-VkDescriptorPoolInlineUniformBlockCreateInfoEXT-sType-sType",
   10893           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT</code>"
   10894         }
   10895       ]
   10896     },
   10897     "VkDescriptorPoolSize": {
   10898       "core": [
   10899         {
   10900           "vuid": "VUID-VkDescriptorPoolSize-descriptorCount-00302",
   10901           "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   10902         },
   10903         {
   10904           "vuid": "VUID-VkDescriptorPoolSize-type-parameter",
   10905           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
   10906         }
   10907       ],
   10908       "(VK_EXT_inline_uniform_block)": [
   10909         {
   10910           "vuid": "VUID-VkDescriptorPoolSize-type-02218",
   10911           "text": " If <code>type</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code> then <code>descriptorCount</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   10912         }
   10913       ]
   10914     },
   10915     "vkDestroyDescriptorPool": {
   10916       "core": [
   10917         {
   10918           "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00303",
   10919           "text": " All submitted commands that refer to <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
   10920         },
   10921         {
   10922           "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00304",
   10923           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   10924         },
   10925         {
   10926           "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-00305",
   10927           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   10928         },
   10929         {
   10930           "vuid": "VUID-vkDestroyDescriptorPool-device-parameter",
   10931           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10932         },
   10933         {
   10934           "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parameter",
   10935           "text": " If <code>descriptorPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
   10936         },
   10937         {
   10938           "vuid": "VUID-vkDestroyDescriptorPool-pAllocator-parameter",
   10939           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   10940         },
   10941         {
   10942           "vuid": "VUID-vkDestroyDescriptorPool-descriptorPool-parent",
   10943           "text": " If <code>descriptorPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   10944         }
   10945       ]
   10946     },
   10947     "vkAllocateDescriptorSets": {
   10948       "core": [
   10949         {
   10950           "vuid": "VUID-vkAllocateDescriptorSets-device-parameter",
   10951           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   10952         },
   10953         {
   10954           "vuid": "VUID-vkAllocateDescriptorSets-pAllocateInfo-parameter",
   10955           "text": " <code>pAllocateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorSetAllocateInfo</code> structure"
   10956         },
   10957         {
   10958           "vuid": "VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter",
   10959           "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pAllocateInfo</code>::descriptorSetCount <code>VkDescriptorSet</code> handles"
   10960         }
   10961       ]
   10962     },
   10963     "VkDescriptorSetAllocateInfo": {
   10964       "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   10965         {
   10966           "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-00306",
   10967           "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> not be greater than the number of sets that are currently available for allocation in <code>descriptorPool</code>"
   10968         },
   10969         {
   10970           "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-00307",
   10971           "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have enough free descriptor capacity remaining to allocate the descriptor sets of the specified layouts"
   10972         }
   10973       ],
   10974       "(VK_KHR_push_descriptor)": [
   10975         {
   10976           "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-00308",
   10977           "text": " Each element of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> not have been created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code> set"
   10978         }
   10979       ],
   10980       "(VK_EXT_descriptor_indexing)": [
   10981         {
   10982           "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-03044",
   10983           "text": " If any element of <code>pSetLayouts</code> was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> bit set, <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
   10984         }
   10985       ],
   10986       "core": [
   10987         {
   10988           "vuid": "VUID-VkDescriptorSetAllocateInfo-sType-sType",
   10989           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO</code>"
   10990         },
   10991         {
   10992           "vuid": "VUID-VkDescriptorSetAllocateInfo-pNext-pNext",
   10993           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDescriptorSetVariableDescriptorCountAllocateInfoEXT\">VkDescriptorSetVariableDescriptorCountAllocateInfoEXT</a>"
   10994         },
   10995         {
   10996           "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorPool-parameter",
   10997           "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
   10998         },
   10999         {
   11000           "vuid": "VUID-VkDescriptorSetAllocateInfo-pSetLayouts-parameter",
   11001           "text": " <code>pSetLayouts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSetLayout</code> handles"
   11002         },
   11003         {
   11004           "vuid": "VUID-VkDescriptorSetAllocateInfo-descriptorSetCount-arraylength",
   11005           "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11006         },
   11007         {
   11008           "vuid": "VUID-VkDescriptorSetAllocateInfo-commonparent",
   11009           "text": " Both of <code>descriptorPool</code>, and the elements of <code>pSetLayouts</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11010         }
   11011       ]
   11012     },
   11013     "VkDescriptorSetVariableDescriptorCountAllocateInfoEXT": {
   11014       "(VK_EXT_descriptor_indexing)": [
   11015         {
   11016           "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-descriptorSetCount-03045",
   11017           "text": " If <code>descriptorSetCount</code> is not zero, <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> equal <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>descriptorSetCount</code>"
   11018         },
   11019         {
   11020           "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pSetLayouts-03046",
   11021           "text": " If <a href=\"#VkDescriptorSetAllocateInfo\">VkDescriptorSetAllocateInfo</a>::<code>pSetLayouts</code>[i] has a variable descriptor count binding, then <code>pDescriptorCounts</code>[i] <strong class=\"purple\">must</strong> be less than or equal to the descriptor count specified for that binding when the descriptor set layout was created."
   11022         },
   11023         {
   11024           "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-sType-sType",
   11025           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT</code>"
   11026         },
   11027         {
   11028           "vuid": "VUID-VkDescriptorSetVariableDescriptorCountAllocateInfoEXT-pDescriptorCounts-parameter",
   11029           "text": " If <code>descriptorSetCount</code> is not <code>0</code>, <code>pDescriptorCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>uint32_t</code> values"
   11030         }
   11031       ]
   11032     },
   11033     "vkFreeDescriptorSets": {
   11034       "core": [
   11035         {
   11036           "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00309",
   11037           "text": " All submitted commands that refer to any element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have completed execution"
   11038         },
   11039         {
   11040           "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00310",
   11041           "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> <code>VkDescriptorSet</code> handles, each element of which <strong class=\"purple\">must</strong> either be a valid handle or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   11042         },
   11043         {
   11044           "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-00311",
   11045           "text": " Each valid handle in <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated from <code>descriptorPool</code>"
   11046         },
   11047         {
   11048           "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-00312",
   11049           "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT</code> flag"
   11050         },
   11051         {
   11052           "vuid": "VUID-vkFreeDescriptorSets-device-parameter",
   11053           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11054         },
   11055         {
   11056           "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parameter",
   11057           "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
   11058         },
   11059         {
   11060           "vuid": "VUID-vkFreeDescriptorSets-descriptorSetCount-arraylength",
   11061           "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11062         },
   11063         {
   11064           "vuid": "VUID-vkFreeDescriptorSets-descriptorPool-parent",
   11065           "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   11066         },
   11067         {
   11068           "vuid": "VUID-vkFreeDescriptorSets-pDescriptorSets-parent",
   11069           "text": " Each element of <code>pDescriptorSets</code> that is a valid handle <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>descriptorPool</code>"
   11070         }
   11071       ]
   11072     },
   11073     "vkResetDescriptorPool": {
   11074       "core": [
   11075         {
   11076           "vuid": "VUID-vkResetDescriptorPool-descriptorPool-00313",
   11077           "text": " All uses of <code>descriptorPool</code> (via any allocated descriptor sets) <strong class=\"purple\">must</strong> have completed execution"
   11078         },
   11079         {
   11080           "vuid": "VUID-vkResetDescriptorPool-device-parameter",
   11081           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11082         },
   11083         {
   11084           "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parameter",
   11085           "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorPool</code> handle"
   11086         },
   11087         {
   11088           "vuid": "VUID-vkResetDescriptorPool-flags-zerobitmask",
   11089           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   11090         },
   11091         {
   11092           "vuid": "VUID-vkResetDescriptorPool-descriptorPool-parent",
   11093           "text": " <code>descriptorPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   11094         }
   11095       ]
   11096     },
   11097     "vkUpdateDescriptorSets": {
   11098       "!(VK_EXT_descriptor_indexing)": [
   11099         {
   11100           "vuid": "VUID-vkUpdateDescriptorSets-dstSet-00314",
   11101           "text": " The <code>dstSet</code> member of each element of <code>pDescriptorWrites</code> or <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
   11102         }
   11103       ],
   11104       "(VK_EXT_descriptor_indexing)": [
   11105         {
   11106           "vuid": "VUID-vkUpdateDescriptorSets-None-03047",
   11107           "text": " Descriptor bindings updated by this command which were created without the <code>VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT</code> or <code>VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT</code> bits set <strong class=\"purple\">must</strong> not be used by any command that was recorded to a command buffer which is in the <a href=\"#commandbuffers-lifecycle\">pending state</a>."
   11108         }
   11109       ],
   11110       "core": [
   11111         {
   11112           "vuid": "VUID-vkUpdateDescriptorSets-device-parameter",
   11113           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11114         },
   11115         {
   11116           "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorWrites-parameter",
   11117           "text": " If <code>descriptorWriteCount</code> is not <code>0</code>, <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures"
   11118         },
   11119         {
   11120           "vuid": "VUID-vkUpdateDescriptorSets-pDescriptorCopies-parameter",
   11121           "text": " If <code>descriptorCopyCount</code> is not <code>0</code>, <code>pDescriptorCopies</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCopyCount</code> valid <code>VkCopyDescriptorSet</code> structures"
   11122         }
   11123       ]
   11124     },
   11125     "VkWriteDescriptorSet": {
   11126       "core": [
   11127         {
   11128           "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00315",
   11129           "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be less than or equal to the maximum value of <code>binding</code> of all <a href=\"#VkDescriptorSetLayoutBinding\">VkDescriptorSetLayoutBinding</a> structures specified when <code>dstSet</code>&#8217;s descriptor set layout was created"
   11130         },
   11131         {
   11132           "vuid": "VUID-VkWriteDescriptorSet-dstBinding-00316",
   11133           "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a binding with a non-zero <code>descriptorCount</code>"
   11134         },
   11135         {
   11136           "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00317",
   11137           "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <code>descriptorType</code> and <code>stageFlags</code>."
   11138         },
   11139         {
   11140           "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-00318",
   11141           "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> all either use immutable samplers or <strong class=\"purple\">must</strong> all not use immutable samplers."
   11142         },
   11143         {
   11144           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00319",
   11145           "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> match the type of <code>dstBinding</code> within <code>dstSet</code>"
   11146         },
   11147         {
   11148           "vuid": "VUID-VkWriteDescriptorSet-dstSet-00320",
   11149           "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorSet\">VkDescriptorSet</a> handle"
   11150         },
   11151         {
   11152           "vuid": "VUID-VkWriteDescriptorSet-dstArrayElement-00321",
   11153           "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
   11154         },
   11155         {
   11156           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00322",
   11157           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorImageInfo</code> structures"
   11158         },
   11159         {
   11160           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00323",
   11161           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, <code>pTexelBufferView</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkBufferView</code> handles"
   11162         },
   11163         {
   11164           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00324",
   11165           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorCount</code> valid <code>VkDescriptorBufferInfo</code> structures"
   11166         },
   11167         {
   11168           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00325",
   11169           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLER</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was not allocated with a layout that included immutable samplers for <code>dstBinding</code> with <code>descriptorType</code>, the <code>sampler</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampler</code> object"
   11170         },
   11171         {
   11172           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00326",
   11173           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> and <code>imageLayout</code> members of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> and <a href=\"#VkImageLayout\">VkImageLayout</a>, respectively"
   11174         },
   11175         {
   11176           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01946",
   11177           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code>, then the <code>imageView</code> member of each <code>pImageInfo</code> element <strong class=\"purple\">must</strong> have been created without a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain"
   11178         },
   11179         {
   11180           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01947",
   11181           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and if any element of <code>pImageInfo</code> has a <code>imageView</code> member that was created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain, then <code>dstSet</code> <strong class=\"purple\">must</strong> have been allocated with a layout that included immutable samplers for <code>dstBinding</code>"
   11182         },
   11183         {
   11184           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01948",
   11185           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, and <code>dstSet</code> was allocated with a layout that included immutable samplers for <code>dstBinding</code>, then the <code>imageView</code> member of each element of <code>pImageInfo</code> which corresponds to an immutable sampler that enables <a href=\"#samplers-YCbCr-conversion\">sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion</a> <strong class=\"purple\">must</strong> have been created with a <code>VkSamplerYcbcrConversionInfo</code> structure in its <code>pNext</code> chain with an <em>identically defined</em> <code>VkSamplerYcbcrConversionInfo</code> to the corresponding immutable sampler"
   11186         },
   11187         {
   11188           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01402",
   11189           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, for each descriptor that will be accessed via load or store operations the <code>imageLayout</code> member for corresponding elements of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   11190         },
   11191         {
   11192           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00327",
   11193           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>"
   11194         },
   11195         {
   11196           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00328",
   11197           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>offset</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>"
   11198         },
   11199         {
   11200           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00329",
   11201           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code>, <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code>, or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, and the <code>buffer</code> member of any element of <code>pBufferInfo</code> is the handle of a non-sparse buffer, then that buffer <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   11202         },
   11203         {
   11204           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00330",
   11205           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT</code> set"
   11206         },
   11207         {
   11208           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00331",
   11209           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>buffer</code> member of each element of <code>pBufferInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_BUFFER_BIT</code> set"
   11210         },
   11211         {
   11212           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00332",
   11213           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxUniformBufferRange</code>"
   11214         },
   11215         {
   11216           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00333",
   11217           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER</code> or <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code>, the <code>range</code> member of each element of <code>pBufferInfo</code>, or the effective range if <code>range</code> is <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxStorageBufferRange</code>"
   11218         },
   11219         {
   11220           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00334",
   11221           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT</code> set"
   11222         },
   11223         {
   11224           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00335",
   11225           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER</code>, the <code>VkBuffer</code> that each element of <code>pTexelBufferView</code> was created from <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT</code> set"
   11226         },
   11227         {
   11228           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00336",
   11229           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with the identity swizzle"
   11230         },
   11231         {
   11232           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00337",
   11233           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_SAMPLED_BIT</code> set"
   11234         },
   11235         {
   11236           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-01403",
   11237           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE</code> or <code>VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER</code>, the <code>imageLayout</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> be a member of the list given in <a href=\"#descriptorsets-sampledimage\">Sampled Image</a> or <a href=\"#descriptorsets-combinedimagesampler\">Combined Image Sampler</a>, corresponding to its type"
   11238         },
   11239         {
   11240           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00338",
   11241           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT</code> set"
   11242         },
   11243         {
   11244           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-00339",
   11245           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_STORAGE_IMAGE</code>, the <code>imageView</code> member of each element of <code>pImageInfo</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_STORAGE_BIT</code> set"
   11246         },
   11247         {
   11248           "vuid": "VUID-VkWriteDescriptorSet-sType-sType",
   11249           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET</code>"
   11250         },
   11251         {
   11252           "vuid": "VUID-VkWriteDescriptorSet-pNext-pNext",
   11253           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> or <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a>"
   11254         },
   11255         {
   11256           "vuid": "VUID-VkWriteDescriptorSet-sType-unique",
   11257           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   11258         },
   11259         {
   11260           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-parameter",
   11261           "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
   11262         },
   11263         {
   11264           "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-arraylength",
   11265           "text": " <code>descriptorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11266         },
   11267         {
   11268           "vuid": "VUID-VkWriteDescriptorSet-commonparent",
   11269           "text": " Both of <code>dstSet</code>, and the elements of <code>pTexelBufferView</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11270         }
   11271       ],
   11272       "(VK_EXT_inline_uniform_block)": [
   11273         {
   11274           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02219",
   11275           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
   11276         },
   11277         {
   11278           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02220",
   11279           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
   11280         },
   11281         {
   11282           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02221",
   11283           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetInlineUniformBlockEXT\">VkWriteDescriptorSetInlineUniformBlockEXT</a> structure whose <code>dataSize</code> member equals <code>descriptorCount</code>"
   11284         }
   11285       ],
   11286       "(VK_NV_ray_tracing)": [
   11287         {
   11288           "vuid": "VUID-VkWriteDescriptorSet-descriptorType-02382",
   11289           "text": " If <code>descriptorType</code> is <code>VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV</code>, the <code>pNext</code> chain <strong class=\"purple\">must</strong> include a <a href=\"#VkWriteDescriptorSetAccelerationStructureNV\">VkWriteDescriptorSetAccelerationStructureNV</a> structure whose <code>accelerationStructureCount</code> member equals <code>descriptorCount</code>"
   11290         }
   11291       ],
   11292       "(VK_EXT_descriptor_indexing)": [
   11293         {
   11294           "vuid": "VUID-VkWriteDescriptorSet-descriptorCount-03048",
   11295           "text": " All consecutive bindings updated via a single <code>VkWriteDescriptorSet</code> structure, except those with a <code>descriptorCount</code> of zero, <strong class=\"purple\">must</strong> have identical <a href=\"#VkDescriptorBindingFlagBitsEXT\">VkDescriptorBindingFlagBitsEXT</a>."
   11296         }
   11297       ]
   11298     },
   11299     "VkDescriptorBufferInfo": {
   11300       "core": [
   11301         {
   11302           "vuid": "VUID-VkDescriptorBufferInfo-offset-00340",
   11303           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
   11304         },
   11305         {
   11306           "vuid": "VUID-VkDescriptorBufferInfo-range-00341",
   11307           "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11308         },
   11309         {
   11310           "vuid": "VUID-VkDescriptorBufferInfo-range-00342",
   11311           "text": " If <code>range</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>range</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code> minus <code>offset</code>"
   11312         },
   11313         {
   11314           "vuid": "VUID-VkDescriptorBufferInfo-buffer-parameter",
   11315           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   11316         }
   11317       ]
   11318     },
   11319     "VkDescriptorImageInfo": {
   11320       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   11321         {
   11322           "vuid": "VUID-VkDescriptorImageInfo-imageView-00343",
   11323           "text": " <code>imageView</code> <strong class=\"purple\">must</strong> not be 2D or 2D array image view created from a 3D image"
   11324         }
   11325       ],
   11326       "core": [
   11327         {
   11328           "vuid": "VUID-VkDescriptorImageInfo-imageView-01976",
   11329           "text": " If <code>imageView</code> is created from a depth/stencil image, the <code>aspectMask</code> used to create the <code>imageView</code> <strong class=\"purple\">must</strong> include either <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> but not both."
   11330         },
   11331         {
   11332           "vuid": "VUID-VkDescriptorImageInfo-imageLayout-00344",
   11333           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time this descriptor is accessed as defined by the <a href=\"#resources-image-layouts-matching-rule\">image layout matching rules</a>"
   11334         },
   11335         {
   11336           "vuid": "VUID-VkDescriptorImageInfo-commonparent",
   11337           "text": " Both of <code>imageView</code>, and <code>sampler</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11338         }
   11339       ],
   11340       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   11341         {
   11342           "vuid": "VUID-VkDescriptorImageInfo-sampler-01564",
   11343           "text": " If <code>sampler</code> is used and the <a href=\"#VkFormat\">VkFormat</a> of the image is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, the image <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, and the <code>aspectMask</code> of the <code>imageView</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code> or (for three-plane formats only) <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
   11344         }
   11345       ]
   11346     },
   11347     "VkWriteDescriptorSetInlineUniformBlockEXT": {
   11348       "(VK_EXT_inline_uniform_block)": [
   11349         {
   11350           "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-02222",
   11351           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
   11352         },
   11353         {
   11354           "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-sType-sType",
   11355           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT</code>"
   11356         },
   11357         {
   11358           "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-pData-parameter",
   11359           "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
   11360         },
   11361         {
   11362           "vuid": "VUID-VkWriteDescriptorSetInlineUniformBlockEXT-dataSize-arraylength",
   11363           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11364         }
   11365       ]
   11366     },
   11367     "VkWriteDescriptorSetAccelerationStructureNV": {
   11368       "(VK_NV_ray_tracing)": [
   11369         {
   11370           "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-02236",
   11371           "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be equal to <code>descriptorCount</code> in the extended structure"
   11372         },
   11373         {
   11374           "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-sType-sType",
   11375           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV</code>"
   11376         },
   11377         {
   11378           "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-pAccelerationStructures-parameter",
   11379           "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <code>VkAccelerationStructureNV</code> handles"
   11380         },
   11381         {
   11382           "vuid": "VUID-VkWriteDescriptorSetAccelerationStructureNV-accelerationStructureCount-arraylength",
   11383           "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11384         }
   11385       ]
   11386     },
   11387     "VkCopyDescriptorSet": {
   11388       "core": [
   11389         {
   11390           "vuid": "VUID-VkCopyDescriptorSet-srcBinding-00345",
   11391           "text": " <code>srcBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>srcSet</code>"
   11392         },
   11393         {
   11394           "vuid": "VUID-VkCopyDescriptorSet-srcArrayElement-00346",
   11395           "text": " The sum of <code>srcArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>srcBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
   11396         },
   11397         {
   11398           "vuid": "VUID-VkCopyDescriptorSet-dstBinding-00347",
   11399           "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding within <code>dstSet</code>"
   11400         },
   11401         {
   11402           "vuid": "VUID-VkCopyDescriptorSet-dstArrayElement-00348",
   11403           "text": " The sum of <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding specified by <code>dstBinding</code>, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
   11404         },
   11405         {
   11406           "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02632",
   11407           "text": " The type of <code>dstBinding</code> within <code>dstSet</code> <strong class=\"purple\">must</strong> be equal to the type of <code>srcBinding</code> within <code>srcSet</code>"
   11408         },
   11409         {
   11410           "vuid": "VUID-VkCopyDescriptorSet-srcSet-00349",
   11411           "text": " If <code>srcSet</code> is equal to <code>dstSet</code>, then the source and destination ranges of descriptors <strong class=\"purple\">must</strong> not overlap, where the ranges <strong class=\"purple\">may</strong> include array elements from consecutive bindings as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
   11412         },
   11413         {
   11414           "vuid": "VUID-VkCopyDescriptorSet-sType-sType",
   11415           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET</code>"
   11416         },
   11417         {
   11418           "vuid": "VUID-VkCopyDescriptorSet-pNext-pNext",
   11419           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   11420         },
   11421         {
   11422           "vuid": "VUID-VkCopyDescriptorSet-srcSet-parameter",
   11423           "text": " <code>srcSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
   11424         },
   11425         {
   11426           "vuid": "VUID-VkCopyDescriptorSet-dstSet-parameter",
   11427           "text": " <code>dstSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
   11428         },
   11429         {
   11430           "vuid": "VUID-VkCopyDescriptorSet-commonparent",
   11431           "text": " Both of <code>dstSet</code>, and <code>srcSet</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11432         }
   11433       ],
   11434       "(VK_EXT_inline_uniform_block)": [
   11435         {
   11436           "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02223",
   11437           "text": " If the descriptor type of the descriptor set binding specified by <code>srcBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>srcArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
   11438         },
   11439         {
   11440           "vuid": "VUID-VkCopyDescriptorSet-dstBinding-02224",
   11441           "text": " If the descriptor type of the descriptor set binding specified by <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
   11442         },
   11443         {
   11444           "vuid": "VUID-VkCopyDescriptorSet-srcBinding-02225",
   11445           "text": " If the descriptor type of the descriptor set binding specified by either <code>srcBinding</code> or <code>dstBinding</code> is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
   11446         }
   11447       ],
   11448       "(VK_EXT_descriptor_indexing)": [
   11449         {
   11450           "vuid": "VUID-VkCopyDescriptorSet-srcSet-01918",
   11451           "text": " If <code>srcSet</code>&#8217;s layout was created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set, then <code>dstSet</code>&#8217;s layout <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set"
   11452         },
   11453         {
   11454           "vuid": "VUID-VkCopyDescriptorSet-srcSet-01919",
   11455           "text": " If <code>srcSet</code>&#8217;s layout was created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set, then <code>dstSet</code>&#8217;s layout <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT</code> flag set"
   11456         },
   11457         {
   11458           "vuid": "VUID-VkCopyDescriptorSet-srcSet-01920",
   11459           "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created with the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
   11460         },
   11461         {
   11462           "vuid": "VUID-VkCopyDescriptorSet-srcSet-01921",
   11463           "text": " If the descriptor pool from which <code>srcSet</code> was allocated was created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set, then the descriptor pool from which <code>dstSet</code> was allocated <strong class=\"purple\">must</strong> also have been created without the <code>VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT</code> flag set"
   11464         }
   11465       ]
   11466     },
   11467     "vkCreateDescriptorUpdateTemplate": {
   11468       "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
   11469         {
   11470           "vuid": "VUID-vkCreateDescriptorUpdateTemplate-device-parameter",
   11471           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11472         },
   11473         {
   11474           "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pCreateInfo-parameter",
   11475           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDescriptorUpdateTemplateCreateInfo</code> structure"
   11476         },
   11477         {
   11478           "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pAllocator-parameter",
   11479           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   11480         },
   11481         {
   11482           "vuid": "VUID-vkCreateDescriptorUpdateTemplate-pDescriptorUpdateTemplate-parameter",
   11483           "text": " <code>pDescriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDescriptorUpdateTemplate</code> handle"
   11484         }
   11485       ]
   11486     },
   11487     "VkDescriptorUpdateTemplateCreateInfo": {
   11488       "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
   11489         {
   11490           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00350",
   11491           "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET</code>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
   11492         },
   11493         {
   11494           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-sType-sType",
   11495           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO</code>"
   11496         },
   11497         {
   11498           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pNext-pNext",
   11499           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   11500         },
   11501         {
   11502           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-flags-zerobitmask",
   11503           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   11504         },
   11505         {
   11506           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-pDescriptorUpdateEntries-parameter",
   11507           "text": " <code>pDescriptorUpdateEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorUpdateEntryCount</code> valid <code>VkDescriptorUpdateTemplateEntry</code> structures"
   11508         },
   11509         {
   11510           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-parameter",
   11511           "text": " <code>templateType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorUpdateTemplateType\">VkDescriptorUpdateTemplateType</a> value"
   11512         },
   11513         {
   11514           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorSetLayout-parameter",
   11515           "text": " If <code>descriptorSetLayout</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorSetLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSetLayout</code> handle"
   11516         },
   11517         {
   11518           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-descriptorUpdateEntryCount-arraylength",
   11519           "text": " <code>descriptorUpdateEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11520         },
   11521         {
   11522           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-commonparent",
   11523           "text": " Both of <code>descriptorSetLayout</code>, and <code>pipelineLayout</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11524         }
   11525       ],
   11526       "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_KHR_push_descriptor)": [
   11527         {
   11528           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00351",
   11529           "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
   11530         },
   11531         {
   11532           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00352",
   11533           "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   11534         },
   11535         {
   11536           "vuid": "VUID-VkDescriptorUpdateTemplateCreateInfo-templateType-00353",
   11537           "text": " If <code>templateType</code> is <code>VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR</code>, <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>"
   11538         }
   11539       ]
   11540     },
   11541     "VkDescriptorUpdateTemplateEntry": {
   11542       "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
   11543         {
   11544           "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstBinding-00354",
   11545           "text": " <code>dstBinding</code> <strong class=\"purple\">must</strong> be a valid binding in the descriptor set layout implicitly specified when using a descriptor update template to update descriptors."
   11546         },
   11547         {
   11548           "vuid": "VUID-VkDescriptorUpdateTemplateEntry-dstArrayElement-00355",
   11549           "text": " <code>dstArrayElement</code> and <code>descriptorCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of array elements in the descriptor set binding implicitly specified when using a descriptor update template to update descriptors, and all applicable consecutive bindings, as described by <a href=\"#descriptorsets-updates-consecutive\">consecutive binding updates</a>"
   11550         },
   11551         {
   11552           "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptorType-parameter",
   11553           "text": " <code>descriptorType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDescriptorType\">VkDescriptorType</a> value"
   11554         }
   11555       ],
   11556       "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)+(VK_EXT_inline_uniform_block)": [
   11557         {
   11558           "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02226",
   11559           "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>dstArrayElement</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
   11560         },
   11561         {
   11562           "vuid": "VUID-VkDescriptorUpdateTemplateEntry-descriptor-02227",
   11563           "text": " If <code>descriptor</code> type is <code>VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT</code>, <code>descriptorCount</code> <strong class=\"purple\">must</strong> be an integer multiple of <code>4</code>"
   11564         }
   11565       ]
   11566     },
   11567     "vkDestroyDescriptorUpdateTemplate": {
   11568       "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
   11569         {
   11570           "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00356",
   11571           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   11572         },
   11573         {
   11574           "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorSetLayout-00357",
   11575           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>descriptorSetLayout</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   11576         },
   11577         {
   11578           "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-device-parameter",
   11579           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11580         },
   11581         {
   11582           "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parameter",
   11583           "text": " If <code>descriptorUpdateTemplate</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
   11584         },
   11585         {
   11586           "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-pAllocator-parameter",
   11587           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   11588         },
   11589         {
   11590           "vuid": "VUID-vkDestroyDescriptorUpdateTemplate-descriptorUpdateTemplate-parent",
   11591           "text": " If <code>descriptorUpdateTemplate</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   11592         }
   11593       ]
   11594     },
   11595     "vkUpdateDescriptorSetWithTemplate": {
   11596       "(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
   11597         {
   11598           "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-pData-01685",
   11599           "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplate\">vkCreateDescriptorUpdateTemplate</a>"
   11600         },
   11601         {
   11602           "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-device-parameter",
   11603           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11604         },
   11605         {
   11606           "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorSet-parameter",
   11607           "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
   11608         },
   11609         {
   11610           "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parameter",
   11611           "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
   11612         },
   11613         {
   11614           "vuid": "VUID-vkUpdateDescriptorSetWithTemplate-descriptorUpdateTemplate-parent",
   11615           "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   11616         }
   11617       ]
   11618     },
   11619     "vkCmdBindDescriptorSets": {
   11620       "core": [
   11621         {
   11622           "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-00358",
   11623           "text": " Each element of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been allocated with a <code>VkDescriptorSetLayout</code> that matches (is the same as, or identically defined as) the <code>VkDescriptorSetLayout</code> at set <em>n</em> in <code>layout</code>, where <em>n</em> is the sum of <code>firstSet</code> and the index into <code>pDescriptorSets</code>"
   11624         },
   11625         {
   11626           "vuid": "VUID-vkCmdBindDescriptorSets-dynamicOffsetCount-00359",
   11627           "text": " <code>dynamicOffsetCount</code> <strong class=\"purple\">must</strong> be equal to the total number of dynamic descriptors in <code>pDescriptorSets</code>"
   11628         },
   11629         {
   11630           "vuid": "VUID-vkCmdBindDescriptorSets-firstSet-00360",
   11631           "text": " The sum of <code>firstSet</code> and <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
   11632         },
   11633         {
   11634           "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-00361",
   11635           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family"
   11636         },
   11637         {
   11638           "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01971",
   11639           "text": " Each element of <code>pDynamicOffsets</code> which corresponds to a descriptor binding with type <code>VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minUniformBufferOffsetAlignment</code>"
   11640         },
   11641         {
   11642           "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-01972",
   11643           "text": " Each element of <code>pDynamicOffsets</code> which corresponds to a descriptor binding with type <code>VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceLimits</code>::<code>minStorageBufferOffsetAlignment</code>"
   11644         },
   11645         {
   11646           "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-01979",
   11647           "text": " For each dynamic uniform or storage buffer binding in <code>pDescriptorSets</code>, the sum of the effective offset, as defined above, and the range of the binding <strong class=\"purple\">must</strong> be less than or equal to the size of the buffer"
   11648         },
   11649         {
   11650           "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-parameter",
   11651           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   11652         },
   11653         {
   11654           "vuid": "VUID-vkCmdBindDescriptorSets-pipelineBindPoint-parameter",
   11655           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
   11656         },
   11657         {
   11658           "vuid": "VUID-vkCmdBindDescriptorSets-layout-parameter",
   11659           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   11660         },
   11661         {
   11662           "vuid": "VUID-vkCmdBindDescriptorSets-pDescriptorSets-parameter",
   11663           "text": " <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorSetCount</code> valid <code>VkDescriptorSet</code> handles"
   11664         },
   11665         {
   11666           "vuid": "VUID-vkCmdBindDescriptorSets-pDynamicOffsets-parameter",
   11667           "text": " If <code>dynamicOffsetCount</code> is not <code>0</code>, <code>pDynamicOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dynamicOffsetCount</code> <code>uint32_t</code> values"
   11668         },
   11669         {
   11670           "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-recording",
   11671           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   11672         },
   11673         {
   11674           "vuid": "VUID-vkCmdBindDescriptorSets-commandBuffer-cmdpool",
   11675           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   11676         },
   11677         {
   11678           "vuid": "VUID-vkCmdBindDescriptorSets-descriptorSetCount-arraylength",
   11679           "text": " <code>descriptorSetCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11680         },
   11681         {
   11682           "vuid": "VUID-vkCmdBindDescriptorSets-commonparent",
   11683           "text": " Each of <code>commandBuffer</code>, <code>layout</code>, and the elements of <code>pDescriptorSets</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11684         }
   11685       ]
   11686     },
   11687     "vkCmdPushDescriptorSetKHR": {
   11688       "(VK_KHR_push_descriptor)": [
   11689         {
   11690           "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-00363",
   11691           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family"
   11692         },
   11693         {
   11694           "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00364",
   11695           "text": " <code>set</code> <strong class=\"purple\">must</strong> be less than <code>VkPipelineLayoutCreateInfo</code>::<code>setLayoutCount</code> provided when <code>layout</code> was created"
   11696         },
   11697         {
   11698           "vuid": "VUID-vkCmdPushDescriptorSetKHR-set-00365",
   11699           "text": " <code>set</code> <strong class=\"purple\">must</strong> be the unique set number in the pipeline layout that uses a descriptor set layout that was created with <code>VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR</code>"
   11700         },
   11701         {
   11702           "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-parameter",
   11703           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   11704         },
   11705         {
   11706           "vuid": "VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter",
   11707           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
   11708         },
   11709         {
   11710           "vuid": "VUID-vkCmdPushDescriptorSetKHR-layout-parameter",
   11711           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   11712         },
   11713         {
   11714           "vuid": "VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter",
   11715           "text": " <code>pDescriptorWrites</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>descriptorWriteCount</code> valid <code>VkWriteDescriptorSet</code> structures"
   11716         },
   11717         {
   11718           "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-recording",
   11719           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   11720         },
   11721         {
   11722           "vuid": "VUID-vkCmdPushDescriptorSetKHR-commandBuffer-cmdpool",
   11723           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   11724         },
   11725         {
   11726           "vuid": "VUID-vkCmdPushDescriptorSetKHR-descriptorWriteCount-arraylength",
   11727           "text": " <code>descriptorWriteCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11728         },
   11729         {
   11730           "vuid": "VUID-vkCmdPushDescriptorSetKHR-commonparent",
   11731           "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11732         }
   11733       ]
   11734     },
   11735     "vkCmdPushDescriptorSetWithTemplateKHR": {
   11736       "(VK_KHR_push_descriptor)+(VK_VERSION_1_1,VK_KHR_descriptor_update_template)": [
   11737         {
   11738           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366",
   11739           "text": " The <code>pipelineBindPoint</code> specified during the creation of the descriptor update template <strong class=\"purple\">must</strong> be supported by the <code>commandBuffer</code>&#8217;s parent <code>VkCommandPool</code>&#8217;s queue family"
   11740         },
   11741         {
   11742           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-01686",
   11743           "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to a memory that contains one or more valid instances of <a href=\"#VkDescriptorImageInfo\">VkDescriptorImageInfo</a>, <a href=\"#VkDescriptorBufferInfo\">VkDescriptorBufferInfo</a>, or <a href=\"#VkBufferView\">VkBufferView</a> in a layout defined by <code>descriptorUpdateTemplate</code> when it was created with <a href=\"#vkCreateDescriptorUpdateTemplateKHR\">vkCreateDescriptorUpdateTemplateKHR</a>"
   11744         },
   11745         {
   11746           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter",
   11747           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   11748         },
   11749         {
   11750           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter",
   11751           "text": " <code>descriptorUpdateTemplate</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorUpdateTemplate</code> handle"
   11752         },
   11753         {
   11754           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter",
   11755           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   11756         },
   11757         {
   11758           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording",
   11759           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   11760         },
   11761         {
   11762           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool",
   11763           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   11764         },
   11765         {
   11766           "vuid": "VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent",
   11767           "text": " Each of <code>commandBuffer</code>, <code>descriptorUpdateTemplate</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11768         }
   11769       ]
   11770     },
   11771     "vkCmdPushConstants": {
   11772       "core": [
   11773         {
   11774           "vuid": "VUID-vkCmdPushConstants-offset-01795",
   11775           "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each shader stage in <code>stageFlags</code>, there <strong class=\"purple\">must</strong> be a push constant range in <code>layout</code> that includes that byte and that stage"
   11776         },
   11777         {
   11778           "vuid": "VUID-vkCmdPushConstants-offset-01796",
   11779           "text": " For each byte in the range specified by <code>offset</code> and <code>size</code> and for each push constant range that overlaps that byte, <code>stageFlags</code> <strong class=\"purple\">must</strong> include all stages in that push constant range&#8217;s <a href=\"#VkPushConstantRange\">VkPushConstantRange</a>::<code>stageFlags</code>"
   11780         },
   11781         {
   11782           "vuid": "VUID-vkCmdPushConstants-offset-00368",
   11783           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   11784         },
   11785         {
   11786           "vuid": "VUID-vkCmdPushConstants-size-00369",
   11787           "text": " <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   11788         },
   11789         {
   11790           "vuid": "VUID-vkCmdPushConstants-offset-00370",
   11791           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code>"
   11792         },
   11793         {
   11794           "vuid": "VUID-vkCmdPushConstants-size-00371",
   11795           "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxPushConstantsSize</code> minus <code>offset</code>"
   11796         },
   11797         {
   11798           "vuid": "VUID-vkCmdPushConstants-commandBuffer-parameter",
   11799           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   11800         },
   11801         {
   11802           "vuid": "VUID-vkCmdPushConstants-layout-parameter",
   11803           "text": " <code>layout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   11804         },
   11805         {
   11806           "vuid": "VUID-vkCmdPushConstants-stageFlags-parameter",
   11807           "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
   11808         },
   11809         {
   11810           "vuid": "VUID-vkCmdPushConstants-stageFlags-requiredbitmask",
   11811           "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   11812         },
   11813         {
   11814           "vuid": "VUID-vkCmdPushConstants-pValues-parameter",
   11815           "text": " <code>pValues</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>size</code> bytes"
   11816         },
   11817         {
   11818           "vuid": "VUID-vkCmdPushConstants-commandBuffer-recording",
   11819           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   11820         },
   11821         {
   11822           "vuid": "VUID-vkCmdPushConstants-commandBuffer-cmdpool",
   11823           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   11824         },
   11825         {
   11826           "vuid": "VUID-vkCmdPushConstants-size-arraylength",
   11827           "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   11828         },
   11829         {
   11830           "vuid": "VUID-vkCmdPushConstants-commonparent",
   11831           "text": " Both of <code>commandBuffer</code>, and <code>layout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11832         }
   11833       ]
   11834     },
   11835     "vkGetBufferDeviceAddressEXT": {
   11836       "(VK_EXT_buffer_device_address)": [
   11837         {
   11838           "vuid": "VUID-vkGetBufferDeviceAddressEXT-None-02598",
   11839           "text": " The <a href=\"#features-bufferDeviceAddress\">bufferDeviceAddress</a> feature <strong class=\"purple\">must</strong> be enabled"
   11840         },
   11841         {
   11842           "vuid": "VUID-vkGetBufferDeviceAddressEXT-device-02599",
   11843           "text": " If <code>device</code> was created with multiple physical devices, then the <a href=\"#features-bufferDeviceAddressMultiDevice\">bufferDeviceAddressMultiDevice</a> feature <strong class=\"purple\">must</strong> be enabled"
   11844         },
   11845         {
   11846           "vuid": "VUID-vkGetBufferDeviceAddressEXT-device-parameter",
   11847           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11848         },
   11849         {
   11850           "vuid": "VUID-vkGetBufferDeviceAddressEXT-pInfo-parameter",
   11851           "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkBufferDeviceAddressInfoEXT</code> structure"
   11852         }
   11853       ]
   11854     },
   11855     "VkBufferDeviceAddressInfoEXT": {
   11856       "(VK_EXT_buffer_device_address)": [
   11857         {
   11858           "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02600",
   11859           "text": " If <code>buffer</code> is non-sparse and was not created with the <code>VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT</code> flag, then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   11860         },
   11861         {
   11862           "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-02601",
   11863           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT</code>"
   11864         },
   11865         {
   11866           "vuid": "VUID-VkBufferDeviceAddressInfoEXT-sType-sType",
   11867           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT</code>"
   11868         },
   11869         {
   11870           "vuid": "VUID-VkBufferDeviceAddressInfoEXT-pNext-pNext",
   11871           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   11872         },
   11873         {
   11874           "vuid": "VUID-VkBufferDeviceAddressInfoEXT-buffer-parameter",
   11875           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   11876         }
   11877       ]
   11878     },
   11879     "vkCreateQueryPool": {
   11880       "core": [
   11881         {
   11882           "vuid": "VUID-vkCreateQueryPool-device-parameter",
   11883           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11884         },
   11885         {
   11886           "vuid": "VUID-vkCreateQueryPool-pCreateInfo-parameter",
   11887           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkQueryPoolCreateInfo</code> structure"
   11888         },
   11889         {
   11890           "vuid": "VUID-vkCreateQueryPool-pAllocator-parameter",
   11891           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   11892         },
   11893         {
   11894           "vuid": "VUID-vkCreateQueryPool-pQueryPool-parameter",
   11895           "text": " <code>pQueryPool</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkQueryPool</code> handle"
   11896         }
   11897       ]
   11898     },
   11899     "VkQueryPoolCreateInfo": {
   11900       "core": [
   11901         {
   11902           "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00791",
   11903           "text": " If the <a href=\"#features-pipelineStatisticsQuery\">pipeline statistics queries</a> feature is not enabled, <code>queryType</code> <strong class=\"purple\">must</strong> not be <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>"
   11904         },
   11905         {
   11906           "vuid": "VUID-VkQueryPoolCreateInfo-queryType-00792",
   11907           "text": " If <code>queryType</code> is <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code>, <code>pipelineStatistics</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryPipelineStatisticFlagBits\">VkQueryPipelineStatisticFlagBits</a> values"
   11908         },
   11909         {
   11910           "vuid": "VUID-VkQueryPoolCreateInfo-sType-sType",
   11911           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO</code>"
   11912         },
   11913         {
   11914           "vuid": "VUID-VkQueryPoolCreateInfo-pNext-pNext",
   11915           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   11916         },
   11917         {
   11918           "vuid": "VUID-VkQueryPoolCreateInfo-flags-zerobitmask",
   11919           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   11920         },
   11921         {
   11922           "vuid": "VUID-VkQueryPoolCreateInfo-queryType-parameter",
   11923           "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
   11924         }
   11925       ]
   11926     },
   11927     "vkDestroyQueryPool": {
   11928       "core": [
   11929         {
   11930           "vuid": "VUID-vkDestroyQueryPool-queryPool-00793",
   11931           "text": " All submitted commands that refer to <code>queryPool</code> <strong class=\"purple\">must</strong> have completed execution"
   11932         },
   11933         {
   11934           "vuid": "VUID-vkDestroyQueryPool-queryPool-00794",
   11935           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   11936         },
   11937         {
   11938           "vuid": "VUID-vkDestroyQueryPool-queryPool-00795",
   11939           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>queryPool</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   11940         },
   11941         {
   11942           "vuid": "VUID-vkDestroyQueryPool-device-parameter",
   11943           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   11944         },
   11945         {
   11946           "vuid": "VUID-vkDestroyQueryPool-queryPool-parameter",
   11947           "text": " If <code>queryPool</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   11948         },
   11949         {
   11950           "vuid": "VUID-vkDestroyQueryPool-pAllocator-parameter",
   11951           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   11952         },
   11953         {
   11954           "vuid": "VUID-vkDestroyQueryPool-queryPool-parent",
   11955           "text": " If <code>queryPool</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   11956         }
   11957       ]
   11958     },
   11959     "vkCmdResetQueryPool": {
   11960       "core": [
   11961         {
   11962           "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00796",
   11963           "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
   11964         },
   11965         {
   11966           "vuid": "VUID-vkCmdResetQueryPool-firstQuery-00797",
   11967           "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
   11968         },
   11969         {
   11970           "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-parameter",
   11971           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   11972         },
   11973         {
   11974           "vuid": "VUID-vkCmdResetQueryPool-queryPool-parameter",
   11975           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   11976         },
   11977         {
   11978           "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-recording",
   11979           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   11980         },
   11981         {
   11982           "vuid": "VUID-vkCmdResetQueryPool-commandBuffer-cmdpool",
   11983           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   11984         },
   11985         {
   11986           "vuid": "VUID-vkCmdResetQueryPool-renderpass",
   11987           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   11988         },
   11989         {
   11990           "vuid": "VUID-vkCmdResetQueryPool-commonparent",
   11991           "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   11992         }
   11993       ]
   11994     },
   11995     "vkCmdBeginQuery": {
   11996       "core": [
   11997         {
   11998           "vuid": "VUID-vkCmdBeginQuery-queryPool-01922",
   11999           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are <a href=\"#queries-operation-active\">active</a> within <code>commandBuffer</code>"
   12000         },
   12001         {
   12002           "vuid": "VUID-vkCmdBeginQuery-None-00807",
   12003           "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
   12004         },
   12005         {
   12006           "vuid": "VUID-vkCmdBeginQuery-queryType-00800",
   12007           "text": " If the <a href=\"#features-occlusionQueryPrecise\">precise occlusion queries</a> feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>"
   12008         },
   12009         {
   12010           "vuid": "VUID-vkCmdBeginQuery-query-00802",
   12011           "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
   12012         },
   12013         {
   12014           "vuid": "VUID-vkCmdBeginQuery-queryType-00803",
   12015           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   12016         },
   12017         {
   12018           "vuid": "VUID-vkCmdBeginQuery-queryType-00804",
   12019           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   12020         },
   12021         {
   12022           "vuid": "VUID-vkCmdBeginQuery-queryType-00805",
   12023           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   12024         },
   12025         {
   12026           "vuid": "VUID-vkCmdBeginQuery-commandBuffer-parameter",
   12027           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12028         },
   12029         {
   12030           "vuid": "VUID-vkCmdBeginQuery-queryPool-parameter",
   12031           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   12032         },
   12033         {
   12034           "vuid": "VUID-vkCmdBeginQuery-flags-parameter",
   12035           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
   12036         },
   12037         {
   12038           "vuid": "VUID-vkCmdBeginQuery-commandBuffer-recording",
   12039           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12040         },
   12041         {
   12042           "vuid": "VUID-vkCmdBeginQuery-commandBuffer-cmdpool",
   12043           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   12044         },
   12045         {
   12046           "vuid": "VUID-vkCmdBeginQuery-commonparent",
   12047           "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12048         }
   12049       ],
   12050       "(VK_VERSION_1_1)": [
   12051         {
   12052           "vuid": "VUID-vkCmdBeginQuery-commandBuffer-01885",
   12053           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   12054         }
   12055       ],
   12056       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   12057         {
   12058           "vuid": "VUID-vkCmdBeginQuery-query-00808",
   12059           "text": " If <code>vkCmdBeginQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
   12060         }
   12061       ],
   12062       "(VK_EXT_transform_feedback)": [
   12063         {
   12064           "vuid": "VUID-vkCmdBeginQuery-queryType-02327",
   12065           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   12066         },
   12067         {
   12068           "vuid": "VUID-vkCmdBeginQuery-queryType-02328",
   12069           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported"
   12070         }
   12071       ]
   12072     },
   12073     "vkCmdBeginQueryIndexedEXT": {
   12074       "(VK_EXT_transform_feedback)": [
   12075         {
   12076           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-02329",
   12077           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> that differs from that of any queries that are <a href=\"#queries-operation-active\">active</a> within <code>commandBuffer</code>"
   12078         },
   12079         {
   12080           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-None-02330",
   12081           "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
   12082         },
   12083         {
   12084           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02331",
   12085           "text": " If the <a href=\"#features-occlusionQueryPrecise\">precise occlusion queries</a> feature is not enabled, or the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_OCCLUSION</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_CONTROL_PRECISE_BIT</code>"
   12086         },
   12087         {
   12088           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-02332",
   12089           "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
   12090         },
   12091         {
   12092           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02333",
   12093           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_OCCLUSION</code>, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   12094         },
   12095         {
   12096           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02334",
   12097           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate graphics operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   12098         },
   12099         {
   12100           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02335",
   12101           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_PIPELINE_STATISTICS</code> and any of the <code>pipelineStatistics</code> indicate compute operations, the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   12102         },
   12103         {
   12104           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02338",
   12105           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   12106         },
   12107         {
   12108           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02339",
   12109           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>"
   12110         },
   12111         {
   12112           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02340",
   12113           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> <strong class=\"purple\">must</strong> be zero"
   12114         },
   12115         {
   12116           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryType-02341",
   12117           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> then <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackQueries</code> <strong class=\"purple\">must</strong> be supported"
   12118         },
   12119         {
   12120           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-parameter",
   12121           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12122         },
   12123         {
   12124           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-queryPool-parameter",
   12125           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   12126         },
   12127         {
   12128           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-flags-parameter",
   12129           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryControlFlagBits\">VkQueryControlFlagBits</a> values"
   12130         },
   12131         {
   12132           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-recording",
   12133           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12134         },
   12135         {
   12136           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-cmdpool",
   12137           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   12138         },
   12139         {
   12140           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commonparent",
   12141           "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12142         }
   12143       ],
   12144       "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
   12145         {
   12146           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-commandBuffer-02336",
   12147           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   12148         }
   12149       ],
   12150       "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
   12151         {
   12152           "vuid": "VUID-vkCmdBeginQueryIndexedEXT-query-02337",
   12153           "text": " If <code>vkCmdBeginQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
   12154         }
   12155       ]
   12156     },
   12157     "vkCmdEndQuery": {
   12158       "core": [
   12159         {
   12160           "vuid": "VUID-vkCmdEndQuery-None-01923",
   12161           "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
   12162         },
   12163         {
   12164           "vuid": "VUID-vkCmdEndQuery-query-00810",
   12165           "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
   12166         },
   12167         {
   12168           "vuid": "VUID-vkCmdEndQuery-commandBuffer-parameter",
   12169           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12170         },
   12171         {
   12172           "vuid": "VUID-vkCmdEndQuery-queryPool-parameter",
   12173           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   12174         },
   12175         {
   12176           "vuid": "VUID-vkCmdEndQuery-commandBuffer-recording",
   12177           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12178         },
   12179         {
   12180           "vuid": "VUID-vkCmdEndQuery-commandBuffer-cmdpool",
   12181           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   12182         },
   12183         {
   12184           "vuid": "VUID-vkCmdEndQuery-commonparent",
   12185           "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12186         }
   12187       ],
   12188       "(VK_VERSION_1_1)": [
   12189         {
   12190           "vuid": "VUID-vkCmdEndQuery-commandBuffer-01886",
   12191           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   12192         }
   12193       ],
   12194       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   12195         {
   12196           "vuid": "VUID-vkCmdEndQuery-query-00812",
   12197           "text": " If <code>vkCmdEndQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
   12198         }
   12199       ]
   12200     },
   12201     "vkCmdEndQueryIndexedEXT": {
   12202       "(VK_EXT_transform_feedback)": [
   12203         {
   12204           "vuid": "VUID-vkCmdEndQueryIndexedEXT-None-02342",
   12205           "text": " All queries used by the command <strong class=\"purple\">must</strong> be <a href=\"#queries-operation-active\">active</a>"
   12206         },
   12207         {
   12208           "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02343",
   12209           "text": " <code>query</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
   12210         },
   12211         {
   12212           "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02346",
   12213           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> parameter <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackStreams</code>"
   12214         },
   12215         {
   12216           "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryType-02347",
   12217           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was not <code>VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT</code> the <code>index</code> <strong class=\"purple\">must</strong> be zero"
   12218         },
   12219         {
   12220           "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-parameter",
   12221           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12222         },
   12223         {
   12224           "vuid": "VUID-vkCmdEndQueryIndexedEXT-queryPool-parameter",
   12225           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   12226         },
   12227         {
   12228           "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-recording",
   12229           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12230         },
   12231         {
   12232           "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-cmdpool",
   12233           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   12234         },
   12235         {
   12236           "vuid": "VUID-vkCmdEndQueryIndexedEXT-commonparent",
   12237           "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12238         }
   12239       ],
   12240       "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
   12241         {
   12242           "vuid": "VUID-vkCmdEndQueryIndexedEXT-commandBuffer-02344",
   12243           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   12244         }
   12245       ],
   12246       "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
   12247         {
   12248           "vuid": "VUID-vkCmdEndQueryIndexedEXT-query-02345",
   12249           "text": " If <code>vkCmdEndQuery</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
   12250         }
   12251       ]
   12252     },
   12253     "vkGetQueryPoolResults": {
   12254       "core": [
   12255         {
   12256           "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00813",
   12257           "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
   12258         },
   12259         {
   12260           "vuid": "VUID-vkGetQueryPoolResults-flags-00814",
   12261           "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>"
   12262         },
   12263         {
   12264           "vuid": "VUID-vkGetQueryPoolResults-flags-00815",
   12265           "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>pData</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>"
   12266         },
   12267         {
   12268           "vuid": "VUID-vkGetQueryPoolResults-firstQuery-00816",
   12269           "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
   12270         },
   12271         {
   12272           "vuid": "VUID-vkGetQueryPoolResults-dataSize-00817",
   12273           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be large enough to contain the result of each query, as described <a href=\"#queries-operation-memorylayout\">here</a>"
   12274         },
   12275         {
   12276           "vuid": "VUID-vkGetQueryPoolResults-queryType-00818",
   12277           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>"
   12278         },
   12279         {
   12280           "vuid": "VUID-vkGetQueryPoolResults-device-parameter",
   12281           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   12282         },
   12283         {
   12284           "vuid": "VUID-vkGetQueryPoolResults-queryPool-parameter",
   12285           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   12286         },
   12287         {
   12288           "vuid": "VUID-vkGetQueryPoolResults-pData-parameter",
   12289           "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
   12290         },
   12291         {
   12292           "vuid": "VUID-vkGetQueryPoolResults-flags-parameter",
   12293           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
   12294         },
   12295         {
   12296           "vuid": "VUID-vkGetQueryPoolResults-dataSize-arraylength",
   12297           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   12298         },
   12299         {
   12300           "vuid": "VUID-vkGetQueryPoolResults-queryPool-parent",
   12301           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   12302         }
   12303       ]
   12304     },
   12305     "vkCmdCopyQueryPoolResults": {
   12306       "core": [
   12307         {
   12308           "vuid": "VUID-vkCmdCopyQueryPoolResults-dstOffset-00819",
   12309           "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
   12310         },
   12311         {
   12312           "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00820",
   12313           "text": " <code>firstQuery</code> <strong class=\"purple\">must</strong> be less than the number of queries in <code>queryPool</code>"
   12314         },
   12315         {
   12316           "vuid": "VUID-vkCmdCopyQueryPoolResults-firstQuery-00821",
   12317           "text": " The sum of <code>firstQuery</code> and <code>queryCount</code> <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
   12318         },
   12319         {
   12320           "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00822",
   12321           "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is not set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>4</code>"
   12322         },
   12323         {
   12324           "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-00823",
   12325           "text": " If <code>VK_QUERY_RESULT_64_BIT</code> is set in <code>flags</code> then <code>dstOffset</code> and <code>stride</code> <strong class=\"purple\">must</strong> be multiples of <code>8</code>"
   12326         },
   12327         {
   12328           "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00824",
   12329           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have enough storage, from <code>dstOffset</code>, to contain the result of each query, as described <a href=\"#queries-operation-memorylayout\">here</a>"
   12330         },
   12331         {
   12332           "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00825",
   12333           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
   12334         },
   12335         {
   12336           "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-00826",
   12337           "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   12338         },
   12339         {
   12340           "vuid": "VUID-vkCmdCopyQueryPoolResults-queryType-00827",
   12341           "text": " If the <code>queryType</code> used to create <code>queryPool</code> was <code>VK_QUERY_TYPE_TIMESTAMP</code>, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_QUERY_RESULT_PARTIAL_BIT</code>"
   12342         },
   12343         {
   12344           "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-parameter",
   12345           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12346         },
   12347         {
   12348           "vuid": "VUID-vkCmdCopyQueryPoolResults-queryPool-parameter",
   12349           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   12350         },
   12351         {
   12352           "vuid": "VUID-vkCmdCopyQueryPoolResults-dstBuffer-parameter",
   12353           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   12354         },
   12355         {
   12356           "vuid": "VUID-vkCmdCopyQueryPoolResults-flags-parameter",
   12357           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkQueryResultFlagBits\">VkQueryResultFlagBits</a> values"
   12358         },
   12359         {
   12360           "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-recording",
   12361           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12362         },
   12363         {
   12364           "vuid": "VUID-vkCmdCopyQueryPoolResults-commandBuffer-cmdpool",
   12365           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   12366         },
   12367         {
   12368           "vuid": "VUID-vkCmdCopyQueryPoolResults-renderpass",
   12369           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   12370         },
   12371         {
   12372           "vuid": "VUID-vkCmdCopyQueryPoolResults-commonparent",
   12373           "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12374         }
   12375       ]
   12376     },
   12377     "vkCmdWriteTimestamp": {
   12378       "core": [
   12379         {
   12380           "vuid": "VUID-vkCmdWriteTimestamp-queryPool-01416",
   12381           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> of <code>VK_QUERY_TYPE_TIMESTAMP</code>"
   12382         },
   12383         {
   12384           "vuid": "VUID-vkCmdWriteTimestamp-queryPool-00828",
   12385           "text": " The query identified by <code>queryPool</code> and <code>query</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
   12386         },
   12387         {
   12388           "vuid": "VUID-vkCmdWriteTimestamp-timestampValidBits-00829",
   12389           "text": " The command pool&#8217;s queue family <strong class=\"purple\">must</strong> support a non-zero <code>timestampValidBits</code>"
   12390         },
   12391         {
   12392           "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-parameter",
   12393           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12394         },
   12395         {
   12396           "vuid": "VUID-vkCmdWriteTimestamp-pipelineStage-parameter",
   12397           "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
   12398         },
   12399         {
   12400           "vuid": "VUID-vkCmdWriteTimestamp-queryPool-parameter",
   12401           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   12402         },
   12403         {
   12404           "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-recording",
   12405           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12406         },
   12407         {
   12408           "vuid": "VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool",
   12409           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   12410         },
   12411         {
   12412           "vuid": "VUID-vkCmdWriteTimestamp-commonparent",
   12413           "text": " Both of <code>commandBuffer</code>, and <code>queryPool</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12414         }
   12415       ],
   12416       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   12417         {
   12418           "vuid": "VUID-vkCmdWriteTimestamp-None-00830",
   12419           "text": " All queries used by the command <strong class=\"purple\">must</strong> be unavailable"
   12420         },
   12421         {
   12422           "vuid": "VUID-vkCmdWriteTimestamp-query-00831",
   12423           "text": " If <code>vkCmdWriteTimestamp</code> is called within a render pass instance, the sum of <code>query</code> and the number of bits set in the current subpass&#8217;s view mask <strong class=\"purple\">must</strong> be less than or equal to the number of queries in <code>queryPool</code>"
   12424         }
   12425       ]
   12426     },
   12427     "vkCmdClearColorImage": {
   12428       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   12429         {
   12430           "vuid": "VUID-vkCmdClearColorImage-image-01993",
   12431           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>image</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>."
   12432         }
   12433       ],
   12434       "core": [
   12435         {
   12436           "vuid": "VUID-vkCmdClearColorImage-image-00002",
   12437           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
   12438         },
   12439         {
   12440           "vuid": "VUID-vkCmdClearColorImage-image-00003",
   12441           "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   12442         },
   12443         {
   12444           "vuid": "VUID-vkCmdClearColorImage-imageLayout-00004",
   12445           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>"
   12446         },
   12447         {
   12448           "vuid": "VUID-vkCmdClearColorImage-aspectMask-02498",
   12449           "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
   12450         },
   12451         {
   12452           "vuid": "VUID-vkCmdClearColorImage-baseMipLevel-01470",
   12453           "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   12454         },
   12455         {
   12456           "vuid": "VUID-vkCmdClearColorImage-pRanges-01692",
   12457           "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> &#43; <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   12458         },
   12459         {
   12460           "vuid": "VUID-vkCmdClearColorImage-baseArrayLayer-01472",
   12461           "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   12462         },
   12463         {
   12464           "vuid": "VUID-vkCmdClearColorImage-pRanges-01693",
   12465           "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> &#43; <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   12466         },
   12467         {
   12468           "vuid": "VUID-vkCmdClearColorImage-image-00007",
   12469           "text": " <code>image</code> <strong class=\"purple\">must</strong> not have a compressed or depth/stencil format"
   12470         },
   12471         {
   12472           "vuid": "VUID-vkCmdClearColorImage-commandBuffer-parameter",
   12473           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12474         },
   12475         {
   12476           "vuid": "VUID-vkCmdClearColorImage-image-parameter",
   12477           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   12478         },
   12479         {
   12480           "vuid": "VUID-vkCmdClearColorImage-imageLayout-parameter",
   12481           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   12482         },
   12483         {
   12484           "vuid": "VUID-vkCmdClearColorImage-pColor-parameter",
   12485           "text": " <code>pColor</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearColorValue</code> union"
   12486         },
   12487         {
   12488           "vuid": "VUID-vkCmdClearColorImage-pRanges-parameter",
   12489           "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures"
   12490         },
   12491         {
   12492           "vuid": "VUID-vkCmdClearColorImage-commandBuffer-recording",
   12493           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12494         },
   12495         {
   12496           "vuid": "VUID-vkCmdClearColorImage-commandBuffer-cmdpool",
   12497           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   12498         },
   12499         {
   12500           "vuid": "VUID-vkCmdClearColorImage-renderpass",
   12501           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   12502         },
   12503         {
   12504           "vuid": "VUID-vkCmdClearColorImage-rangeCount-arraylength",
   12505           "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   12506         },
   12507         {
   12508           "vuid": "VUID-vkCmdClearColorImage-commonparent",
   12509           "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12510         }
   12511       ],
   12512       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   12513         {
   12514           "vuid": "VUID-vkCmdClearColorImage-image-01545",
   12515           "text": " <code>image</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
   12516         }
   12517       ],
   12518       "!(VK_KHR_shared_presentable_image)": [
   12519         {
   12520           "vuid": "VUID-vkCmdClearColorImage-imageLayout-00005",
   12521           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   12522         }
   12523       ],
   12524       "(VK_KHR_shared_presentable_image)": [
   12525         {
   12526           "vuid": "VUID-vkCmdClearColorImage-imageLayout-01394",
   12527           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
   12528         }
   12529       ],
   12530       "(VK_VERSION_1_1)": [
   12531         {
   12532           "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01805",
   12533           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
   12534         },
   12535         {
   12536           "vuid": "VUID-vkCmdClearColorImage-commandBuffer-01806",
   12537           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
   12538         }
   12539       ]
   12540     },
   12541     "vkCmdClearDepthStencilImage": {
   12542       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   12543         {
   12544           "vuid": "VUID-vkCmdClearDepthStencilImage-image-01994",
   12545           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>image</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>."
   12546         }
   12547       ],
   12548       "core": [
   12549         {
   12550           "vuid": "VUID-vkCmdClearDepthStencilImage-image-00009",
   12551           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
   12552         },
   12553         {
   12554           "vuid": "VUID-vkCmdClearDepthStencilImage-image-00010",
   12555           "text": " If <code>image</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   12556         },
   12557         {
   12558           "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00011",
   12559           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresource ranges of <code>image</code> specified in <code>pRanges</code> at the time this command is executed on a <code>VkDevice</code>"
   12560         },
   12561         {
   12562           "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-00012",
   12563           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be either of <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   12564         },
   12565         {
   12566           "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02499",
   12567           "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> if the image format has a depth component"
   12568         },
   12569         {
   12570           "vuid": "VUID-vkCmdClearDepthStencilImage-aspectMask-02500",
   12571           "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>aspectMask</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each only include <code>VK_IMAGE_ASPECT_STENCIL_BIT</code> if the image format has a stencil component"
   12572         },
   12573         {
   12574           "vuid": "VUID-vkCmdClearDepthStencilImage-baseMipLevel-01474",
   12575           "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseMipLevel</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   12576         },
   12577         {
   12578           "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01694",
   12579           "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>levelCount</code> member is not <code>VK_REMAINING_MIP_LEVELS</code>, then <span class=\"eq\"><code>baseMipLevel</code> &#43; <code>levelCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   12580         },
   12581         {
   12582           "vuid": "VUID-vkCmdClearDepthStencilImage-baseArrayLayer-01476",
   12583           "text": " The <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a>::<code>baseArrayLayer</code> members of the elements of the <code>pRanges</code> array <strong class=\"purple\">must</strong> each be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   12584         },
   12585         {
   12586           "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-01695",
   12587           "text": " For each <a href=\"#VkImageSubresourceRange\">VkImageSubresourceRange</a> element of <code>pRanges</code>, if the <code>layerCount</code> member is not <code>VK_REMAINING_ARRAY_LAYERS</code>, then <span class=\"eq\"><code>baseArrayLayer</code> &#43; <code>layerCount</code></span> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   12588         },
   12589         {
   12590           "vuid": "VUID-vkCmdClearDepthStencilImage-image-00014",
   12591           "text": " <code>image</code> <strong class=\"purple\">must</strong> have a depth/stencil format"
   12592         },
   12593         {
   12594           "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-parameter",
   12595           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12596         },
   12597         {
   12598           "vuid": "VUID-vkCmdClearDepthStencilImage-image-parameter",
   12599           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   12600         },
   12601         {
   12602           "vuid": "VUID-vkCmdClearDepthStencilImage-imageLayout-parameter",
   12603           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   12604         },
   12605         {
   12606           "vuid": "VUID-vkCmdClearDepthStencilImage-pDepthStencil-parameter",
   12607           "text": " <code>pDepthStencil</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkClearDepthStencilValue</code> structure"
   12608         },
   12609         {
   12610           "vuid": "VUID-vkCmdClearDepthStencilImage-pRanges-parameter",
   12611           "text": " <code>pRanges</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rangeCount</code> valid <code>VkImageSubresourceRange</code> structures"
   12612         },
   12613         {
   12614           "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-recording",
   12615           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12616         },
   12617         {
   12618           "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-cmdpool",
   12619           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   12620         },
   12621         {
   12622           "vuid": "VUID-vkCmdClearDepthStencilImage-renderpass",
   12623           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   12624         },
   12625         {
   12626           "vuid": "VUID-vkCmdClearDepthStencilImage-rangeCount-arraylength",
   12627           "text": " <code>rangeCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   12628         },
   12629         {
   12630           "vuid": "VUID-vkCmdClearDepthStencilImage-commonparent",
   12631           "text": " Both of <code>commandBuffer</code>, and <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12632         }
   12633       ],
   12634       "(VK_VERSION_1_1)": [
   12635         {
   12636           "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01807",
   12637           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be a protected image"
   12638         },
   12639         {
   12640           "vuid": "VUID-vkCmdClearDepthStencilImage-commandBuffer-01808",
   12641           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>image</code> <strong class=\"purple\">must</strong> not be an unprotected image"
   12642         }
   12643       ]
   12644     },
   12645     "vkCmdClearAttachments": {
   12646       "core": [
   12647         {
   12648           "vuid": "VUID-vkCmdClearAttachments-aspectMask-02501",
   12649           "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, then the <code>colorAttachment</code> member of that element <strong class=\"purple\">must</strong> either refer to a color attachment which is <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> be a valid color attachment."
   12650         },
   12651         {
   12652           "vuid": "VUID-vkCmdClearAttachments-aspectMask-02502",
   12653           "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_DEPTH_BIT</code>, then the current subpass' depth/stencil attachment <strong class=\"purple\">must</strong> either be <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> have a depth component"
   12654         },
   12655         {
   12656           "vuid": "VUID-vkCmdClearAttachments-aspectMask-02503",
   12657           "text": " If the <code>aspectMask</code> member of any element of <code>pAttachments</code> contains <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>, then the current subpass' depth/stencil attachment <strong class=\"purple\">must</strong> either be <code>VK_ATTACHMENT_UNUSED</code>, or <strong class=\"purple\">must</strong> have a stencil component"
   12658         },
   12659         {
   12660           "vuid": "VUID-vkCmdClearAttachments-pRects-00016",
   12661           "text": " The rectangular region specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within the render area of the current render pass instance"
   12662         },
   12663         {
   12664           "vuid": "VUID-vkCmdClearAttachments-pRects-00017",
   12665           "text": " The layers specified by each element of <code>pRects</code> <strong class=\"purple\">must</strong> be contained within every attachment that <code>pAttachments</code> refers to"
   12666         },
   12667         {
   12668           "vuid": "VUID-vkCmdClearAttachments-layerCount-01934",
   12669           "text": " The <code>layerCount</code> member of each element of <code>pRects</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   12670         },
   12671         {
   12672           "vuid": "VUID-vkCmdClearAttachments-commandBuffer-parameter",
   12673           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12674         },
   12675         {
   12676           "vuid": "VUID-vkCmdClearAttachments-pAttachments-parameter",
   12677           "text": " <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkClearAttachment</code> structures"
   12678         },
   12679         {
   12680           "vuid": "VUID-vkCmdClearAttachments-pRects-parameter",
   12681           "text": " <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectCount</code> <code>VkClearRect</code> structures"
   12682         },
   12683         {
   12684           "vuid": "VUID-vkCmdClearAttachments-commandBuffer-recording",
   12685           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12686         },
   12687         {
   12688           "vuid": "VUID-vkCmdClearAttachments-commandBuffer-cmdpool",
   12689           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   12690         },
   12691         {
   12692           "vuid": "VUID-vkCmdClearAttachments-renderpass",
   12693           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   12694         },
   12695         {
   12696           "vuid": "VUID-vkCmdClearAttachments-attachmentCount-arraylength",
   12697           "text": " <code>attachmentCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   12698         },
   12699         {
   12700           "vuid": "VUID-vkCmdClearAttachments-rectCount-arraylength",
   12701           "text": " <code>rectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   12702         }
   12703       ],
   12704       "(VK_VERSION_1_1)": [
   12705         {
   12706           "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02504",
   12707           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then each attachment to be cleared <strong class=\"purple\">must</strong> not be a protected image."
   12708         },
   12709         {
   12710           "vuid": "VUID-vkCmdClearAttachments-commandBuffer-02505",
   12711           "text": " If <code>commandBuffer</code> is a protected command buffer, then each attachment to be cleared <strong class=\"purple\">must</strong> not be an unprotected image."
   12712         }
   12713       ],
   12714       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   12715         {
   12716           "vuid": "VUID-vkCmdClearAttachments-baseArrayLayer-00018",
   12717           "text": " If the render pass instance this is recorded in uses multiview, then <code>baseArrayLayer</code> <strong class=\"purple\">must</strong> be zero and <code>layerCount</code> <strong class=\"purple\">must</strong> be one."
   12718         }
   12719       ]
   12720     },
   12721     "VkClearAttachment": {
   12722       "core": [
   12723         {
   12724           "vuid": "VUID-VkClearAttachment-aspectMask-00019",
   12725           "text": " If <code>aspectMask</code> includes <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
   12726         },
   12727         {
   12728           "vuid": "VUID-VkClearAttachment-aspectMask-00020",
   12729           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
   12730         },
   12731         {
   12732           "vuid": "VUID-VkClearAttachment-clearValue-00021",
   12733           "text": " <code>clearValue</code> <strong class=\"purple\">must</strong> be a valid <code>VkClearValue</code> union"
   12734         },
   12735         {
   12736           "vuid": "VUID-VkClearAttachment-aspectMask-parameter",
   12737           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
   12738         },
   12739         {
   12740           "vuid": "VUID-VkClearAttachment-aspectMask-requiredbitmask",
   12741           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   12742         }
   12743       ],
   12744       "(VK_EXT_image_drm_format_modifier)": [
   12745         {
   12746           "vuid": "VUID-VkClearAttachment-aspectMask-02246",
   12747           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>."
   12748         }
   12749       ]
   12750     },
   12751     "VkClearDepthStencilValue": {
   12752       "(VK_EXT_depth_range_unrestricted)": [
   12753         {
   12754           "vuid": "VUID-VkClearDepthStencilValue-depth-00022",
   12755           "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   12756         }
   12757       ],
   12758       "!(VK_EXT_depth_range_unrestricted)": [
   12759         {
   12760           "vuid": "VUID-VkClearDepthStencilValue-depth-02506",
   12761           "text": " <code>depth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   12762         }
   12763       ]
   12764     },
   12765     "vkCmdFillBuffer": {
   12766       "core": [
   12767         {
   12768           "vuid": "VUID-vkCmdFillBuffer-dstOffset-00024",
   12769           "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
   12770         },
   12771         {
   12772           "vuid": "VUID-vkCmdFillBuffer-dstOffset-00025",
   12773           "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   12774         },
   12775         {
   12776           "vuid": "VUID-vkCmdFillBuffer-size-00026",
   12777           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   12778         },
   12779         {
   12780           "vuid": "VUID-vkCmdFillBuffer-size-00027",
   12781           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
   12782         },
   12783         {
   12784           "vuid": "VUID-vkCmdFillBuffer-size-00028",
   12785           "text": " If <code>size</code> is not equal to <code>VK_WHOLE_SIZE</code>, <code>size</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   12786         },
   12787         {
   12788           "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00029",
   12789           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
   12790         },
   12791         {
   12792           "vuid": "VUID-vkCmdFillBuffer-dstBuffer-00031",
   12793           "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   12794         },
   12795         {
   12796           "vuid": "VUID-vkCmdFillBuffer-commandBuffer-parameter",
   12797           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12798         },
   12799         {
   12800           "vuid": "VUID-vkCmdFillBuffer-dstBuffer-parameter",
   12801           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   12802         },
   12803         {
   12804           "vuid": "VUID-vkCmdFillBuffer-commandBuffer-recording",
   12805           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12806         },
   12807         {
   12808           "vuid": "VUID-vkCmdFillBuffer-commandBuffer-cmdpool",
   12809           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics or compute operations"
   12810         },
   12811         {
   12812           "vuid": "VUID-vkCmdFillBuffer-renderpass",
   12813           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   12814         },
   12815         {
   12816           "vuid": "VUID-vkCmdFillBuffer-commonparent",
   12817           "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12818         }
   12819       ],
   12820       "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   12821         {
   12822           "vuid": "VUID-vkCmdFillBuffer-commandBuffer-00030",
   12823           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics or compute operations"
   12824         }
   12825       ],
   12826       "(VK_VERSION_1_1)": [
   12827         {
   12828           "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01811",
   12829           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
   12830         },
   12831         {
   12832           "vuid": "VUID-vkCmdFillBuffer-commandBuffer-01812",
   12833           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
   12834         }
   12835       ]
   12836     },
   12837     "vkCmdUpdateBuffer": {
   12838       "core": [
   12839         {
   12840           "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00032",
   12841           "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
   12842         },
   12843         {
   12844           "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00033",
   12845           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
   12846         },
   12847         {
   12848           "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00034",
   12849           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
   12850         },
   12851         {
   12852           "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-00035",
   12853           "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   12854         },
   12855         {
   12856           "vuid": "VUID-vkCmdUpdateBuffer-dstOffset-00036",
   12857           "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   12858         },
   12859         {
   12860           "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00037",
   12861           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be less than or equal to <code>65536</code>"
   12862         },
   12863         {
   12864           "vuid": "VUID-vkCmdUpdateBuffer-dataSize-00038",
   12865           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   12866         },
   12867         {
   12868           "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-parameter",
   12869           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12870         },
   12871         {
   12872           "vuid": "VUID-vkCmdUpdateBuffer-dstBuffer-parameter",
   12873           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   12874         },
   12875         {
   12876           "vuid": "VUID-vkCmdUpdateBuffer-pData-parameter",
   12877           "text": " <code>pData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>dataSize</code> bytes"
   12878         },
   12879         {
   12880           "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-recording",
   12881           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12882         },
   12883         {
   12884           "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-cmdpool",
   12885           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   12886         },
   12887         {
   12888           "vuid": "VUID-vkCmdUpdateBuffer-renderpass",
   12889           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   12890         },
   12891         {
   12892           "vuid": "VUID-vkCmdUpdateBuffer-dataSize-arraylength",
   12893           "text": " <code>dataSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   12894         },
   12895         {
   12896           "vuid": "VUID-vkCmdUpdateBuffer-commonparent",
   12897           "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12898         }
   12899       ],
   12900       "(VK_VERSION_1_1)": [
   12901         {
   12902           "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01813",
   12903           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
   12904         },
   12905         {
   12906           "vuid": "VUID-vkCmdUpdateBuffer-commandBuffer-01814",
   12907           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
   12908         }
   12909       ]
   12910     },
   12911     "vkCmdCopyBuffer": {
   12912       "core": [
   12913         {
   12914           "vuid": "VUID-vkCmdCopyBuffer-srcOffset-00113",
   12915           "text": " The <code>srcOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>srcBuffer</code>"
   12916         },
   12917         {
   12918           "vuid": "VUID-vkCmdCopyBuffer-dstOffset-00114",
   12919           "text": " The <code>dstOffset</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the size of <code>dstBuffer</code>"
   12920         },
   12921         {
   12922           "vuid": "VUID-vkCmdCopyBuffer-size-00115",
   12923           "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>srcBuffer</code> minus <code>srcOffset</code>"
   12924         },
   12925         {
   12926           "vuid": "VUID-vkCmdCopyBuffer-size-00116",
   12927           "text": " The <code>size</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>dstOffset</code>"
   12928         },
   12929         {
   12930           "vuid": "VUID-vkCmdCopyBuffer-pRegions-00117",
   12931           "text": " The union of the source regions, and the union of the destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
   12932         },
   12933         {
   12934           "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00118",
   12935           "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
   12936         },
   12937         {
   12938           "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-00119",
   12939           "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   12940         },
   12941         {
   12942           "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00120",
   12943           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
   12944         },
   12945         {
   12946           "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-00121",
   12947           "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   12948         },
   12949         {
   12950           "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-parameter",
   12951           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   12952         },
   12953         {
   12954           "vuid": "VUID-vkCmdCopyBuffer-srcBuffer-parameter",
   12955           "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   12956         },
   12957         {
   12958           "vuid": "VUID-vkCmdCopyBuffer-dstBuffer-parameter",
   12959           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   12960         },
   12961         {
   12962           "vuid": "VUID-vkCmdCopyBuffer-pRegions-parameter",
   12963           "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferCopy</code> structures"
   12964         },
   12965         {
   12966           "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-recording",
   12967           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   12968         },
   12969         {
   12970           "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-cmdpool",
   12971           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   12972         },
   12973         {
   12974           "vuid": "VUID-vkCmdCopyBuffer-renderpass",
   12975           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   12976         },
   12977         {
   12978           "vuid": "VUID-vkCmdCopyBuffer-regionCount-arraylength",
   12979           "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   12980         },
   12981         {
   12982           "vuid": "VUID-vkCmdCopyBuffer-commonparent",
   12983           "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   12984         }
   12985       ],
   12986       "(VK_VERSION_1_1)": [
   12987         {
   12988           "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01822",
   12989           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
   12990         },
   12991         {
   12992           "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01823",
   12993           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
   12994         },
   12995         {
   12996           "vuid": "VUID-vkCmdCopyBuffer-commandBuffer-01824",
   12997           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
   12998         }
   12999       ]
   13000     },
   13001     "VkBufferCopy": {
   13002       "core": [
   13003         {
   13004           "vuid": "VUID-VkBufferCopy-size-01988",
   13005           "text": " The <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   13006         }
   13007       ]
   13008     },
   13009     "vkCmdCopyImage": {
   13010       "core": [
   13011         {
   13012           "vuid": "VUID-vkCmdCopyImage-pRegions-00122",
   13013           "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
   13014         },
   13015         {
   13016           "vuid": "VUID-vkCmdCopyImage-pRegions-00123",
   13017           "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
   13018         },
   13019         {
   13020           "vuid": "VUID-vkCmdCopyImage-pRegions-00124",
   13021           "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
   13022         },
   13023         {
   13024           "vuid": "VUID-vkCmdCopyImage-srcImage-00126",
   13025           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
   13026         },
   13027         {
   13028           "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00128",
   13029           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
   13030         },
   13031         {
   13032           "vuid": "VUID-vkCmdCopyImage-dstImage-00131",
   13033           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
   13034         },
   13035         {
   13036           "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00133",
   13037           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
   13038         },
   13039         {
   13040           "vuid": "VUID-vkCmdCopyImage-srcImage-00136",
   13041           "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> match"
   13042         },
   13043         {
   13044           "vuid": "VUID-vkCmdCopyImage-srcSubresource-01696",
   13045           "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
   13046         },
   13047         {
   13048           "vuid": "VUID-vkCmdCopyImage-dstSubresource-01697",
   13049           "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
   13050         },
   13051         {
   13052           "vuid": "VUID-vkCmdCopyImage-srcSubresource-01698",
   13053           "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> &#43; <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
   13054         },
   13055         {
   13056           "vuid": "VUID-vkCmdCopyImage-dstSubresource-01699",
   13057           "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> &#43; <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
   13058         },
   13059         {
   13060           "vuid": "VUID-vkCmdCopyImage-srcOffset-01783",
   13061           "text": " The <code>srcOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
   13062         },
   13063         {
   13064           "vuid": "VUID-vkCmdCopyImage-dstOffset-01784",
   13065           "text": " The <code>dstOffset</code> and <code>extent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
   13066         },
   13067         {
   13068           "vuid": "VUID-vkCmdCopyImage-commandBuffer-parameter",
   13069           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   13070         },
   13071         {
   13072           "vuid": "VUID-vkCmdCopyImage-srcImage-parameter",
   13073           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   13074         },
   13075         {
   13076           "vuid": "VUID-vkCmdCopyImage-srcImageLayout-parameter",
   13077           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   13078         },
   13079         {
   13080           "vuid": "VUID-vkCmdCopyImage-dstImage-parameter",
   13081           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   13082         },
   13083         {
   13084           "vuid": "VUID-vkCmdCopyImage-dstImageLayout-parameter",
   13085           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   13086         },
   13087         {
   13088           "vuid": "VUID-vkCmdCopyImage-pRegions-parameter",
   13089           "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageCopy</code> structures"
   13090         },
   13091         {
   13092           "vuid": "VUID-vkCmdCopyImage-commandBuffer-recording",
   13093           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   13094         },
   13095         {
   13096           "vuid": "VUID-vkCmdCopyImage-commandBuffer-cmdpool",
   13097           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   13098         },
   13099         {
   13100           "vuid": "VUID-vkCmdCopyImage-renderpass",
   13101           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   13102         },
   13103         {
   13104           "vuid": "VUID-vkCmdCopyImage-regionCount-arraylength",
   13105           "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   13106         },
   13107         {
   13108           "vuid": "VUID-vkCmdCopyImage-commonparent",
   13109           "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   13110         }
   13111       ],
   13112       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   13113         {
   13114           "vuid": "VUID-vkCmdCopyImage-srcImage-01995",
   13115           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>."
   13116         },
   13117         {
   13118           "vuid": "VUID-vkCmdCopyImage-dstImage-01996",
   13119           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>."
   13120         }
   13121       ],
   13122       "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   13123         {
   13124           "vuid": "VUID-vkCmdCopyImage-srcImage-00127",
   13125           "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13126         },
   13127         {
   13128           "vuid": "VUID-vkCmdCopyImage-dstImage-00132",
   13129           "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13130         },
   13131         {
   13132           "vuid": "VUID-vkCmdCopyImage-srcImage-00135",
   13133           "text": " The <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>"
   13134         }
   13135       ],
   13136       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   13137         {
   13138           "vuid": "VUID-vkCmdCopyImage-srcImage-01546",
   13139           "text": " If <code>srcImage</code> is non-sparse then the image or <em>disjoint</em> plane to be copied <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13140         },
   13141         {
   13142           "vuid": "VUID-vkCmdCopyImage-dstImage-01547",
   13143           "text": " If <code>dstImage</code> is non-sparse then the image or <em>disjoint</em> plane that is the destination of the copy <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13144         },
   13145         {
   13146           "vuid": "VUID-vkCmdCopyImage-srcImage-01548",
   13147           "text": " If the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> is not a <a href=\"#formats-requiring-sampler-ycbcr-conversion\"><em>multi-planar format</em></a>, the <a href=\"#VkFormat\">VkFormat</a> of each of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> be compatible, as defined <a href=\"#copies-images-format-compatibility\">above</a>"
   13148         },
   13149         {
   13150           "vuid": "VUID-vkCmdCopyImage-None-01549",
   13151           "text": " In a copy to or from a plane of a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image</a>, the <a href=\"#VkFormat\">VkFormat</a> of the image and plane <strong class=\"purple\">must</strong> be compatible according to <a href=\"#formats-compatible-planes\">the description of compatible planes</a> for the plane being copied"
   13152         },
   13153         {
   13154           "vuid": "VUID-vkCmdCopyImage-aspectMask-01550",
   13155           "text": " When a copy is performed to or from an image with a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, the <code>aspectMask</code> of the <code>srcSubresource</code> and/or <code>dstSubresource</code> that refers to the multi-planar image <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for a <a href=\"#VkFormat\">VkFormat</a> with three planes)"
   13156         }
   13157       ],
   13158       "!(VK_KHR_shared_presentable_image)": [
   13159         {
   13160           "vuid": "VUID-vkCmdCopyImage-srcImageLayout-00129",
   13161           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13162         },
   13163         {
   13164           "vuid": "VUID-vkCmdCopyImage-dstImageLayout-00134",
   13165           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13166         }
   13167       ],
   13168       "(VK_KHR_shared_presentable_image)": [
   13169         {
   13170           "vuid": "VUID-vkCmdCopyImage-srcImageLayout-01917",
   13171           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
   13172         },
   13173         {
   13174           "vuid": "VUID-vkCmdCopyImage-dstImageLayout-01395",
   13175           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
   13176         }
   13177       ],
   13178       "(VK_VERSION_1_1)": [
   13179         {
   13180           "vuid": "VUID-vkCmdCopyImage-commandBuffer-01825",
   13181           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
   13182         },
   13183         {
   13184           "vuid": "VUID-vkCmdCopyImage-commandBuffer-01826",
   13185           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
   13186         },
   13187         {
   13188           "vuid": "VUID-vkCmdCopyImage-commandBuffer-01827",
   13189           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
   13190         }
   13191       ],
   13192       "(VK_EXT_fragment_density_map)": [
   13193         {
   13194           "vuid": "VUID-vkCmdCopyImage-dstImage-02542",
   13195           "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
   13196         }
   13197       ]
   13198     },
   13199     "VkImageCopy": {
   13200       "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   13201         {
   13202           "vuid": "VUID-VkImageCopy-aspectMask-00137",
   13203           "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
   13204         },
   13205         {
   13206           "vuid": "VUID-VkImageCopy-srcOffset-00157",
   13207           "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
   13208         },
   13209         {
   13210           "vuid": "VUID-VkImageCopy-extent-00158",
   13211           "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width"
   13212         },
   13213         {
   13214           "vuid": "VUID-VkImageCopy-extent-00159",
   13215           "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height"
   13216         },
   13217         {
   13218           "vuid": "VUID-VkImageCopy-extent-00160",
   13219           "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth"
   13220         },
   13221         {
   13222           "vuid": "VUID-VkImageCopy-dstOffset-00162",
   13223           "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
   13224         },
   13225         {
   13226           "vuid": "VUID-VkImageCopy-extent-00163",
   13227           "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width"
   13228         },
   13229         {
   13230           "vuid": "VUID-VkImageCopy-extent-00164",
   13231           "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height"
   13232         },
   13233         {
   13234           "vuid": "VUID-VkImageCopy-extent-00165",
   13235           "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth"
   13236         }
   13237       ],
   13238       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   13239         {
   13240           "vuid": "VUID-VkImageCopy-srcImage-01551",
   13241           "text": " If neither the calling command&#8217;s <code>srcImage</code> nor the calling command&#8217;s <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> then the <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
   13242         },
   13243         {
   13244           "vuid": "VUID-VkImageCopy-srcImage-01552",
   13245           "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
   13246         },
   13247         {
   13248           "vuid": "VUID-VkImageCopy-srcImage-01553",
   13249           "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
   13250         },
   13251         {
   13252           "vuid": "VUID-VkImageCopy-dstImage-01554",
   13253           "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">two planes</a> then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code> or <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>"
   13254         },
   13255         {
   13256           "vuid": "VUID-VkImageCopy-dstImage-01555",
   13257           "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#VkFormat\">VkFormat</a> with <a href=\"#formats-requiring-sampler-ycbcr-conversion\">three planes</a> then the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code>"
   13258         },
   13259         {
   13260           "vuid": "VUID-VkImageCopy-srcImage-01556",
   13261           "text": " If the calling command&#8217;s <code>srcImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>dstImage</code> does not have a multi-planar image format, the <code>dstSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
   13262         },
   13263         {
   13264           "vuid": "VUID-VkImageCopy-dstImage-01557",
   13265           "text": " If the calling command&#8217;s <code>dstImage</code> has a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar image format</a> and the <code>srcImage</code> does not have a multi-planar image format, the <code>srcSubresource</code> <code>aspectMask</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
   13266         },
   13267         {
   13268           "vuid": "VUID-VkImageCopy-srcImage-01727",
   13269           "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>srcOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
   13270         },
   13271         {
   13272           "vuid": "VUID-VkImageCopy-srcImage-01728",
   13273           "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource width"
   13274         },
   13275         {
   13276           "vuid": "VUID-VkImageCopy-srcImage-01729",
   13277           "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource height"
   13278         },
   13279         {
   13280           "vuid": "VUID-VkImageCopy-srcImage-01730",
   13281           "text": " If the calling command&#8217;s <code>srcImage</code> is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the source image subresource depth"
   13282         },
   13283         {
   13284           "vuid": "VUID-VkImageCopy-dstImage-01731",
   13285           "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
   13286         },
   13287         {
   13288           "vuid": "VUID-VkImageCopy-dstImage-01732",
   13289           "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource width"
   13290         },
   13291         {
   13292           "vuid": "VUID-VkImageCopy-dstImage-01733",
   13293           "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource height"
   13294         },
   13295         {
   13296           "vuid": "VUID-VkImageCopy-dstImage-01734",
   13297           "text": " If the calling command&#8217;s <code>dstImage</code> is a compressed format image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>extent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the destination image subresource depth"
   13298         }
   13299       ],
   13300       "!(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   13301         {
   13302           "vuid": "VUID-VkImageCopy-layerCount-00138",
   13303           "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
   13304         },
   13305         {
   13306           "vuid": "VUID-VkImageCopy-srcImage-00139",
   13307           "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
   13308         },
   13309         {
   13310           "vuid": "VUID-VkImageCopy-srcImage-01789",
   13311           "text": " If the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   13312         }
   13313       ],
   13314       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   13315         {
   13316           "vuid": "VUID-VkImageCopy-extent-00140",
   13317           "text": " The number of slices of the <code>extent</code> (for 3D) or layers of the <code>srcSubresource</code> (for non-3D) <strong class=\"purple\">must</strong> match the number of slices of the <code>extent</code> (for 3D) or layers of the <code>dstSubresource</code> (for non-3D)"
   13318         },
   13319         {
   13320           "vuid": "VUID-VkImageCopy-srcImage-00141",
   13321           "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of the corresponding subresource <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
   13322         },
   13323         {
   13324           "vuid": "VUID-VkImageCopy-srcImage-01790",
   13325           "text": " If both <code>srcImage</code> and <code>dstImage</code> are of type <code>VK_IMAGE_TYPE_2D</code> then <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   13326         },
   13327         {
   13328           "vuid": "VUID-VkImageCopy-srcImage-01791",
   13329           "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>srcSubresource</code>."
   13330         },
   13331         {
   13332           "vuid": "VUID-VkImageCopy-dstImage-01792",
   13333           "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, and the <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_3D</code>, then <code>extent.depth</code> <strong class=\"purple\">must</strong> equal to the <code>layerCount</code> member of <code>dstSubresource</code>."
   13334         }
   13335       ],
   13336       "core": [
   13337         {
   13338           "vuid": "VUID-VkImageCopy-aspectMask-00142",
   13339           "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>srcImage</code>"
   13340         },
   13341         {
   13342           "vuid": "VUID-VkImageCopy-aspectMask-00143",
   13343           "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>dstImage</code>"
   13344         },
   13345         {
   13346           "vuid": "VUID-VkImageCopy-srcOffset-00144",
   13347           "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
   13348         },
   13349         {
   13350           "vuid": "VUID-VkImageCopy-srcOffset-00145",
   13351           "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
   13352         },
   13353         {
   13354           "vuid": "VUID-VkImageCopy-srcImage-00146",
   13355           "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   13356         },
   13357         {
   13358           "vuid": "VUID-VkImageCopy-srcOffset-00147",
   13359           "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
   13360         },
   13361         {
   13362           "vuid": "VUID-VkImageCopy-srcImage-01785",
   13363           "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   13364         },
   13365         {
   13366           "vuid": "VUID-VkImageCopy-dstImage-01786",
   13367           "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   13368         },
   13369         {
   13370           "vuid": "VUID-VkImageCopy-srcImage-01787",
   13371           "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>."
   13372         },
   13373         {
   13374           "vuid": "VUID-VkImageCopy-dstImage-01788",
   13375           "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code>."
   13376         },
   13377         {
   13378           "vuid": "VUID-VkImageCopy-dstOffset-00150",
   13379           "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
   13380         },
   13381         {
   13382           "vuid": "VUID-VkImageCopy-dstOffset-00151",
   13383           "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
   13384         },
   13385         {
   13386           "vuid": "VUID-VkImageCopy-dstImage-00152",
   13387           "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   13388         },
   13389         {
   13390           "vuid": "VUID-VkImageCopy-dstOffset-00153",
   13391           "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
   13392         },
   13393         {
   13394           "vuid": "VUID-VkImageCopy-srcSubresource-parameter",
   13395           "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
   13396         },
   13397         {
   13398           "vuid": "VUID-VkImageCopy-dstSubresource-parameter",
   13399           "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
   13400         }
   13401       ]
   13402     },
   13403     "VkImageSubresourceLayers": {
   13404       "core": [
   13405         {
   13406           "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00167",
   13407           "text": " If <code>aspectMask</code> contains <code>VK_IMAGE_ASPECT_COLOR_BIT</code>, it <strong class=\"purple\">must</strong> not contain either of <code>VK_IMAGE_ASPECT_DEPTH_BIT</code> or <code>VK_IMAGE_ASPECT_STENCIL_BIT</code>"
   13408         },
   13409         {
   13410           "vuid": "VUID-VkImageSubresourceLayers-aspectMask-00168",
   13411           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not contain <code>VK_IMAGE_ASPECT_METADATA_BIT</code>"
   13412         },
   13413         {
   13414           "vuid": "VUID-VkImageSubresourceLayers-layerCount-01700",
   13415           "text": " <code>layerCount</code> <strong class=\"purple\">must</strong> be greater than 0"
   13416         },
   13417         {
   13418           "vuid": "VUID-VkImageSubresourceLayers-aspectMask-parameter",
   13419           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageAspectFlagBits\">VkImageAspectFlagBits</a> values"
   13420         },
   13421         {
   13422           "vuid": "VUID-VkImageSubresourceLayers-aspectMask-requiredbitmask",
   13423           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   13424         }
   13425       ],
   13426       "(VK_EXT_image_drm_format_modifier)": [
   13427         {
   13428           "vuid": "VUID-VkImageSubresourceLayers-aspectMask-02247",
   13429           "text": " <code>aspectMask</code> <strong class=\"purple\">must</strong> not include <code>VK_IMAGE_ASPECT_MEMORY_PLANE</code><em>_i</em>_BIT_EXT for any index <em>i</em>."
   13430         }
   13431       ]
   13432     },
   13433     "vkCmdCopyBufferToImage": {
   13434       "core": [
   13435         {
   13436           "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00171",
   13437           "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
   13438         },
   13439         {
   13440           "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00172",
   13441           "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
   13442         },
   13443         {
   13444           "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-00173",
   13445           "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
   13446         },
   13447         {
   13448           "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00174",
   13449           "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_SRC_BIT</code> usage flag"
   13450         },
   13451         {
   13452           "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-00176",
   13453           "text": " If <code>srcBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13454         },
   13455         {
   13456           "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00177",
   13457           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
   13458         },
   13459         {
   13460           "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00178",
   13461           "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13462         },
   13463         {
   13464           "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-00179",
   13465           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
   13466         },
   13467         {
   13468           "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00180",
   13469           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
   13470         },
   13471         {
   13472           "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01701",
   13473           "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
   13474         },
   13475         {
   13476           "vuid": "VUID-vkCmdCopyBufferToImage-imageSubresource-01702",
   13477           "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> &#43; <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
   13478         },
   13479         {
   13480           "vuid": "VUID-vkCmdCopyBufferToImage-imageOffset-01793",
   13481           "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
   13482         },
   13483         {
   13484           "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-parameter",
   13485           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   13486         },
   13487         {
   13488           "vuid": "VUID-vkCmdCopyBufferToImage-srcBuffer-parameter",
   13489           "text": " <code>srcBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   13490         },
   13491         {
   13492           "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-parameter",
   13493           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   13494         },
   13495         {
   13496           "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-parameter",
   13497           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   13498         },
   13499         {
   13500           "vuid": "VUID-vkCmdCopyBufferToImage-pRegions-parameter",
   13501           "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures"
   13502         },
   13503         {
   13504           "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-recording",
   13505           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   13506         },
   13507         {
   13508           "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool",
   13509           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   13510         },
   13511         {
   13512           "vuid": "VUID-vkCmdCopyBufferToImage-renderpass",
   13513           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   13514         },
   13515         {
   13516           "vuid": "VUID-vkCmdCopyBufferToImage-regionCount-arraylength",
   13517           "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   13518         },
   13519         {
   13520           "vuid": "VUID-vkCmdCopyBufferToImage-commonparent",
   13521           "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   13522         }
   13523       ],
   13524       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   13525         {
   13526           "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-01997",
   13527           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_DST_BIT</code>."
   13528         }
   13529       ],
   13530       "!(VK_KHR_shared_presentable_image)": [
   13531         {
   13532           "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-00181",
   13533           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13534         }
   13535       ],
   13536       "(VK_KHR_shared_presentable_image)": [
   13537         {
   13538           "vuid": "VUID-vkCmdCopyBufferToImage-dstImageLayout-01396",
   13539           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code>, <code>VK_IMAGE_LAYOUT_GENERAL</code>, or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>"
   13540         }
   13541       ],
   13542       "(VK_VERSION_1_1)": [
   13543         {
   13544           "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01828",
   13545           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
   13546         },
   13547         {
   13548           "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01829",
   13549           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
   13550         },
   13551         {
   13552           "vuid": "VUID-vkCmdCopyBufferToImage-commandBuffer-01830",
   13553           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
   13554         }
   13555       ],
   13556       "(VK_EXT_fragment_density_map)": [
   13557         {
   13558           "vuid": "VUID-vkCmdCopyBufferToImage-dstImage-02543",
   13559           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
   13560         }
   13561       ]
   13562     },
   13563     "vkCmdCopyImageToBuffer": {
   13564       "core": [
   13565         {
   13566           "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00182",
   13567           "text": " The image region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
   13568         },
   13569         {
   13570           "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00183",
   13571           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be large enough to contain all buffer locations that are accessed according to <a href=\"#copies-buffers-images-addressing\">Buffer and Image Addressing</a>, for each element of <code>pRegions</code>"
   13572         },
   13573         {
   13574           "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-00184",
   13575           "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
   13576         },
   13577         {
   13578           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00186",
   13579           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
   13580         },
   13581         {
   13582           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00187",
   13583           "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13584         },
   13585         {
   13586           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-00188",
   13587           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
   13588         },
   13589         {
   13590           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189",
   13591           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
   13592         },
   13593         {
   13594           "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00191",
   13595           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
   13596         },
   13597         {
   13598           "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-00192",
   13599           "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13600         },
   13601         {
   13602           "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01703",
   13603           "text": " The <code>imageSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
   13604         },
   13605         {
   13606           "vuid": "VUID-vkCmdCopyImageToBuffer-imageSubresource-01704",
   13607           "text": " The <span class=\"eq\"><code>imageSubresource.baseArrayLayer</code> &#43; <code>imageSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
   13608         },
   13609         {
   13610           "vuid": "VUID-vkCmdCopyImageToBuffer-imageOffset-01794",
   13611           "text": " The <code>imageOffset</code> and <code>imageExtent</code> members of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> respect the image transfer granularity requirements of <code>commandBuffer</code>&#8217;s command pool&#8217;s queue family, as described in <a href=\"#VkQueueFamilyProperties\">VkQueueFamilyProperties</a>"
   13612         },
   13613         {
   13614           "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter",
   13615           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   13616         },
   13617         {
   13618           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-parameter",
   13619           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   13620         },
   13621         {
   13622           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-parameter",
   13623           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   13624         },
   13625         {
   13626           "vuid": "VUID-vkCmdCopyImageToBuffer-dstBuffer-parameter",
   13627           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   13628         },
   13629         {
   13630           "vuid": "VUID-vkCmdCopyImageToBuffer-pRegions-parameter",
   13631           "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkBufferImageCopy</code> structures"
   13632         },
   13633         {
   13634           "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-recording",
   13635           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   13636         },
   13637         {
   13638           "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool",
   13639           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   13640         },
   13641         {
   13642           "vuid": "VUID-vkCmdCopyImageToBuffer-renderpass",
   13643           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   13644         },
   13645         {
   13646           "vuid": "VUID-vkCmdCopyImageToBuffer-regionCount-arraylength",
   13647           "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   13648         },
   13649         {
   13650           "vuid": "VUID-vkCmdCopyImageToBuffer-commonparent",
   13651           "text": " Each of <code>commandBuffer</code>, <code>dstBuffer</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   13652         }
   13653       ],
   13654       "(VK_VERSION_1_1,VK_KHR_maintenance1)": [
   13655         {
   13656           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-01998",
   13657           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_TRANSFER_SRC_BIT</code>."
   13658         }
   13659       ],
   13660       "!(VK_KHR_shared_presentable_image)": [
   13661         {
   13662           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190",
   13663           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13664         }
   13665       ],
   13666       "(VK_KHR_shared_presentable_image)": [
   13667         {
   13668           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImageLayout-01397",
   13669           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13670         }
   13671       ],
   13672       "(VK_VERSION_1_1)": [
   13673         {
   13674           "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01831",
   13675           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
   13676         },
   13677         {
   13678           "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01832",
   13679           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be a protected buffer"
   13680         },
   13681         {
   13682           "vuid": "VUID-vkCmdCopyImageToBuffer-commandBuffer-01833",
   13683           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstBuffer</code> <strong class=\"purple\">must</strong> not be an unprotected buffer"
   13684         }
   13685       ],
   13686       "(VK_EXT_fragment_density_map)": [
   13687         {
   13688           "vuid": "VUID-vkCmdCopyImageToBuffer-srcImage-02544",
   13689           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
   13690         }
   13691       ]
   13692     },
   13693     "VkBufferImageCopy": {
   13694       "!(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   13695         {
   13696           "vuid": "VUID-VkBufferImageCopy-bufferOffset-00193",
   13697           "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is not a depth/stencil format, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size."
   13698         },
   13699         {
   13700           "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00203",
   13701           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
   13702         },
   13703         {
   13704           "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00204",
   13705           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
   13706         },
   13707         {
   13708           "vuid": "VUID-VkBufferImageCopy-imageOffset-00205",
   13709           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
   13710         },
   13711         {
   13712           "vuid": "VUID-VkBufferImageCopy-bufferOffset-00206",
   13713           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
   13714         },
   13715         {
   13716           "vuid": "VUID-VkBufferImageCopy-imageExtent-00207",
   13717           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width"
   13718         },
   13719         {
   13720           "vuid": "VUID-VkBufferImageCopy-imageExtent-00208",
   13721           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height"
   13722         },
   13723         {
   13724           "vuid": "VUID-VkBufferImageCopy-imageExtent-00209",
   13725           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth"
   13726         }
   13727       ],
   13728       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   13729         {
   13730           "vuid": "VUID-VkBufferImageCopy-bufferOffset-01558",
   13731           "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is not a depth/stencil format or a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the format&#8217;s texel block size."
   13732         },
   13733         {
   13734           "vuid": "VUID-VkBufferImageCopy-bufferOffset-01559",
   13735           "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the element size of the compatible format for the format and the <code>aspectMask</code> of the <code>imageSubresource</code> as defined in <a href=\"#formats-compatible-planes\">Compatible formats of planes of multi-planar formats</a>"
   13736         },
   13737         {
   13738           "vuid": "VUID-VkBufferImageCopy-None-01735",
   13739           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width"
   13740         },
   13741         {
   13742           "vuid": "VUID-VkBufferImageCopy-None-01736",
   13743           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height"
   13744         },
   13745         {
   13746           "vuid": "VUID-VkBufferImageCopy-None-01737",
   13747           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, all members of <code>imageOffset</code> <strong class=\"purple\">must</strong> be a multiple of the corresponding dimensions of the compressed texel block"
   13748         },
   13749         {
   13750           "vuid": "VUID-VkBufferImageCopy-None-01738",
   13751           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block size in bytes"
   13752         },
   13753         {
   13754           "vuid": "VUID-VkBufferImageCopy-None-01739",
   13755           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.width</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block width or <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource width"
   13756         },
   13757         {
   13758           "vuid": "VUID-VkBufferImageCopy-None-01740",
   13759           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block height or <span class=\"eq\">(<code>imageExtent.height</code> &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource height"
   13760         },
   13761         {
   13762           "vuid": "VUID-VkBufferImageCopy-None-01741",
   13763           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is a compressed image, or a <em>single-plane</em>, &#8220;<code>_422</code>&#8221; image format, <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be a multiple of the compressed texel block depth or <span class=\"eq\">(<code>imageExtent.depth</code> &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> equal the image subresource depth"
   13764         },
   13765         {
   13766           "vuid": "VUID-VkBufferImageCopy-aspectMask-01560",
   13767           "text": " If the calling command&#8217;s <code>VkImage</code> parameter&#8217;s format is a <a href=\"#formats-requiring-sampler-ycbcr-conversion\">multi-planar format</a>, then the <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_ASPECT_PLANE_0_BIT</code>, <code>VK_IMAGE_ASPECT_PLANE_1_BIT</code>, or <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> (with <code>VK_IMAGE_ASPECT_PLANE_2_BIT</code> valid only for image formats with three planes)"
   13768         }
   13769       ],
   13770       "core": [
   13771         {
   13772           "vuid": "VUID-VkBufferImageCopy-bufferOffset-00194",
   13773           "text": " <code>bufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   13774         },
   13775         {
   13776           "vuid": "VUID-VkBufferImageCopy-bufferRowLength-00195",
   13777           "text": " <code>bufferRowLength</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>width</code> member of <code>imageExtent</code>"
   13778         },
   13779         {
   13780           "vuid": "VUID-VkBufferImageCopy-bufferImageHeight-00196",
   13781           "text": " <code>bufferImageHeight</code> <strong class=\"purple\">must</strong> be <code>0</code>, or greater than or equal to the <code>height</code> member of <code>imageExtent</code>"
   13782         },
   13783         {
   13784           "vuid": "VUID-VkBufferImageCopy-imageOffset-00197",
   13785           "text": " <code>imageOffset.x</code> and <span class=\"eq\">(<code>imageExtent.width</code> &#43; <code>imageOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource width"
   13786         },
   13787         {
   13788           "vuid": "VUID-VkBufferImageCopy-imageOffset-00198",
   13789           "text": " <code>imageOffset.y</code> and <span class=\"eq\">(imageExtent.height &#43; <code>imageOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource height"
   13790         },
   13791         {
   13792           "vuid": "VUID-VkBufferImageCopy-srcImage-00199",
   13793           "text": " If the calling command&#8217;s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>imageOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   13794         },
   13795         {
   13796           "vuid": "VUID-VkBufferImageCopy-imageOffset-00200",
   13797           "text": " <code>imageOffset.z</code> and <span class=\"eq\">(imageExtent.depth &#43; <code>imageOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the image subresource depth"
   13798         },
   13799         {
   13800           "vuid": "VUID-VkBufferImageCopy-srcImage-00201",
   13801           "text": " If the calling command&#8217;s <code>srcImage</code> (<a href=\"#vkCmdCopyImageToBuffer\">vkCmdCopyImageToBuffer</a>) or <code>dstImage</code> (<a href=\"#vkCmdCopyBufferToImage\">vkCmdCopyBufferToImage</a>) is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>imageOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>imageExtent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   13802         },
   13803         {
   13804           "vuid": "VUID-VkBufferImageCopy-aspectMask-00211",
   13805           "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>VkImage</code> parameter"
   13806         },
   13807         {
   13808           "vuid": "VUID-VkBufferImageCopy-aspectMask-00212",
   13809           "text": " The <code>aspectMask</code> member of <code>imageSubresource</code> <strong class=\"purple\">must</strong> only have a single bit set"
   13810         },
   13811         {
   13812           "vuid": "VUID-VkBufferImageCopy-baseArrayLayer-00213",
   13813           "text": " If the calling command&#8217;s <code>VkImage</code> parameter is of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of <code>imageSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
   13814         },
   13815         {
   13816           "vuid": "VUID-VkBufferImageCopy-imageSubresource-parameter",
   13817           "text": " <code>imageSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
   13818         }
   13819       ],
   13820       "!(VK_EXT_depth_range_unrestricted)": [
   13821         {
   13822           "vuid": "VUID-VkBufferImageCopy-None-00214",
   13823           "text": " When copying to the depth aspect of an image subresource, the data in the source buffer <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
   13824         }
   13825       ]
   13826     },
   13827     "vkCmdBlitImage": {
   13828       "core": [
   13829         {
   13830           "vuid": "VUID-vkCmdBlitImage-pRegions-00215",
   13831           "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
   13832         },
   13833         {
   13834           "vuid": "VUID-vkCmdBlitImage-pRegions-00216",
   13835           "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
   13836         },
   13837         {
   13838           "vuid": "VUID-vkCmdBlitImage-pRegions-00217",
   13839           "text": " The union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory with any texel that <strong class=\"purple\">may</strong> be sampled during the blit operation"
   13840         },
   13841         {
   13842           "vuid": "VUID-vkCmdBlitImage-srcImage-01999",
   13843           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_SRC_BIT</code>."
   13844         },
   13845         {
   13846           "vuid": "VUID-vkCmdBlitImage-srcImage-00219",
   13847           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_SRC_BIT</code> usage flag"
   13848         },
   13849         {
   13850           "vuid": "VUID-vkCmdBlitImage-srcImage-00220",
   13851           "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13852         },
   13853         {
   13854           "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00221",
   13855           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
   13856         },
   13857         {
   13858           "vuid": "VUID-vkCmdBlitImage-dstImage-02000",
   13859           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_BLIT_DST_BIT</code>."
   13860         },
   13861         {
   13862           "vuid": "VUID-vkCmdBlitImage-dstImage-00224",
   13863           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with <code>VK_IMAGE_USAGE_TRANSFER_DST_BIT</code> usage flag"
   13864         },
   13865         {
   13866           "vuid": "VUID-vkCmdBlitImage-dstImage-00225",
   13867           "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   13868         },
   13869         {
   13870           "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00226",
   13871           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
   13872         },
   13873         {
   13874           "vuid": "VUID-vkCmdBlitImage-srcImage-00228",
   13875           "text": " The sample count of <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> both be equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
   13876         },
   13877         {
   13878           "vuid": "VUID-vkCmdBlitImage-srcImage-00229",
   13879           "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a signed integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with a signed integer <a href=\"#VkFormat\">VkFormat</a>"
   13880         },
   13881         {
   13882           "vuid": "VUID-vkCmdBlitImage-srcImage-00230",
   13883           "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>, the other <strong class=\"purple\">must</strong> also have been created with an unsigned integer <a href=\"#VkFormat\">VkFormat</a>"
   13884         },
   13885         {
   13886           "vuid": "VUID-vkCmdBlitImage-srcImage-00231",
   13887           "text": " If either of <code>srcImage</code> or <code>dstImage</code> was created with a depth/stencil format, the other <strong class=\"purple\">must</strong> have exactly the same format"
   13888         },
   13889         {
   13890           "vuid": "VUID-vkCmdBlitImage-srcImage-00232",
   13891           "text": " If <code>srcImage</code> was created with a depth/stencil format, <code>filter</code> <strong class=\"purple\">must</strong> be <code>VK_FILTER_NEAREST</code>"
   13892         },
   13893         {
   13894           "vuid": "VUID-vkCmdBlitImage-srcImage-00233",
   13895           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>"
   13896         },
   13897         {
   13898           "vuid": "VUID-vkCmdBlitImage-dstImage-00234",
   13899           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with a <code>samples</code> value of <code>VK_SAMPLE_COUNT_1_BIT</code>"
   13900         },
   13901         {
   13902           "vuid": "VUID-vkCmdBlitImage-filter-02001",
   13903           "text": " If <code>filter</code> is <code>VK_FILTER_LINEAR</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   13904         },
   13905         {
   13906           "vuid": "VUID-vkCmdBlitImage-srcSubresource-01705",
   13907           "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
   13908         },
   13909         {
   13910           "vuid": "VUID-vkCmdBlitImage-dstSubresource-01706",
   13911           "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
   13912         },
   13913         {
   13914           "vuid": "VUID-vkCmdBlitImage-srcSubresource-01707",
   13915           "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> &#43; <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
   13916         },
   13917         {
   13918           "vuid": "VUID-vkCmdBlitImage-dstSubresource-01708",
   13919           "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> &#43; <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
   13920         },
   13921         {
   13922           "vuid": "VUID-vkCmdBlitImage-commandBuffer-parameter",
   13923           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   13924         },
   13925         {
   13926           "vuid": "VUID-vkCmdBlitImage-srcImage-parameter",
   13927           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   13928         },
   13929         {
   13930           "vuid": "VUID-vkCmdBlitImage-srcImageLayout-parameter",
   13931           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   13932         },
   13933         {
   13934           "vuid": "VUID-vkCmdBlitImage-dstImage-parameter",
   13935           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   13936         },
   13937         {
   13938           "vuid": "VUID-vkCmdBlitImage-dstImageLayout-parameter",
   13939           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   13940         },
   13941         {
   13942           "vuid": "VUID-vkCmdBlitImage-pRegions-parameter",
   13943           "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageBlit</code> structures"
   13944         },
   13945         {
   13946           "vuid": "VUID-vkCmdBlitImage-filter-parameter",
   13947           "text": " <code>filter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFilter\">VkFilter</a> value"
   13948         },
   13949         {
   13950           "vuid": "VUID-vkCmdBlitImage-commandBuffer-recording",
   13951           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   13952         },
   13953         {
   13954           "vuid": "VUID-vkCmdBlitImage-commandBuffer-cmdpool",
   13955           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   13956         },
   13957         {
   13958           "vuid": "VUID-vkCmdBlitImage-renderpass",
   13959           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   13960         },
   13961         {
   13962           "vuid": "VUID-vkCmdBlitImage-regionCount-arraylength",
   13963           "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   13964         },
   13965         {
   13966           "vuid": "VUID-vkCmdBlitImage-commonparent",
   13967           "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   13968         }
   13969       ],
   13970       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   13971         {
   13972           "vuid": "VUID-vkCmdBlitImage-srcImage-01561",
   13973           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
   13974         },
   13975         {
   13976           "vuid": "VUID-vkCmdBlitImage-dstImage-01562",
   13977           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> not use a format listed in <a href=\"#formats-requiring-sampler-ycbcr-conversion\">Formats requiring sampler Y&#8217;C<sub>B</sub>C<sub>R</sub> conversion for <code>VK_IMAGE_ASPECT_COLOR_BIT</code> image views</a>"
   13978         }
   13979       ],
   13980       "!(VK_KHR_shared_presentable_image)": [
   13981         {
   13982           "vuid": "VUID-vkCmdBlitImage-srcImageLayout-00222",
   13983           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13984         },
   13985         {
   13986           "vuid": "VUID-vkCmdBlitImage-dstImageLayout-00227",
   13987           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13988         }
   13989       ],
   13990       "(VK_KHR_shared_presentable_image)": [
   13991         {
   13992           "vuid": "VUID-vkCmdBlitImage-srcImageLayout-01398",
   13993           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13994         },
   13995         {
   13996           "vuid": "VUID-vkCmdBlitImage-dstImageLayout-01399",
   13997           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   13998         }
   13999       ],
   14000       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   14001         {
   14002           "vuid": "VUID-vkCmdBlitImage-filter-02002",
   14003           "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, then the <a href=\"#resources-image-format-features\">format features</a> of <code>srcImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>."
   14004         },
   14005         {
   14006           "vuid": "VUID-vkCmdBlitImage-filter-00237",
   14007           "text": " If <code>filter</code> is <code>VK_FILTER_CUBIC_EXT</code>, <code>srcImage</code> <strong class=\"purple\">must</strong> have a <a href=\"#VkImageType\">VkImageType</a> of <code>VK_IMAGE_TYPE_2D</code>"
   14008         }
   14009       ],
   14010       "(VK_VERSION_1_1)": [
   14011         {
   14012           "vuid": "VUID-vkCmdBlitImage-commandBuffer-01834",
   14013           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
   14014         },
   14015         {
   14016           "vuid": "VUID-vkCmdBlitImage-commandBuffer-01835",
   14017           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
   14018         },
   14019         {
   14020           "vuid": "VUID-vkCmdBlitImage-commandBuffer-01836",
   14021           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
   14022         }
   14023       ],
   14024       "(VK_EXT_fragment_density_map)": [
   14025         {
   14026           "vuid": "VUID-vkCmdBlitImage-dstImage-02545",
   14027           "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
   14028         }
   14029       ]
   14030     },
   14031     "VkImageBlit": {
   14032       "core": [
   14033         {
   14034           "vuid": "VUID-VkImageBlit-aspectMask-00238",
   14035           "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
   14036         },
   14037         {
   14038           "vuid": "VUID-VkImageBlit-layerCount-00239",
   14039           "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
   14040         },
   14041         {
   14042           "vuid": "VUID-VkImageBlit-srcImage-00240",
   14043           "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
   14044         },
   14045         {
   14046           "vuid": "VUID-VkImageBlit-aspectMask-00241",
   14047           "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>srcImage</code>"
   14048         },
   14049         {
   14050           "vuid": "VUID-VkImageBlit-aspectMask-00242",
   14051           "text": " The <code>aspectMask</code> member of <code>dstSubresource</code> <strong class=\"purple\">must</strong> specify aspects present in the calling command&#8217;s <code>dstImage</code>"
   14052         },
   14053         {
   14054           "vuid": "VUID-VkImageBlit-srcOffset-00243",
   14055           "text": " <code>srcOffset</code>[0].<code>x</code> and <code>srcOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
   14056         },
   14057         {
   14058           "vuid": "VUID-VkImageBlit-srcOffset-00244",
   14059           "text": " <code>srcOffset</code>[0].<code>y</code> and <code>srcOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
   14060         },
   14061         {
   14062           "vuid": "VUID-VkImageBlit-srcImage-00245",
   14063           "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>."
   14064         },
   14065         {
   14066           "vuid": "VUID-VkImageBlit-srcOffset-00246",
   14067           "text": " <code>srcOffset</code>[0].<code>z</code> and <code>srcOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
   14068         },
   14069         {
   14070           "vuid": "VUID-VkImageBlit-srcImage-00247",
   14071           "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>srcOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>."
   14072         },
   14073         {
   14074           "vuid": "VUID-VkImageBlit-dstOffset-00248",
   14075           "text": " <code>dstOffset</code>[0].<code>x</code> and <code>dstOffset</code>[1].<code>x</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
   14076         },
   14077         {
   14078           "vuid": "VUID-VkImageBlit-dstOffset-00249",
   14079           "text": " <code>dstOffset</code>[0].<code>y</code> and <code>dstOffset</code>[1].<code>y</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
   14080         },
   14081         {
   14082           "vuid": "VUID-VkImageBlit-dstImage-00250",
   14083           "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset</code>[0].y <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].y <strong class=\"purple\">must</strong> be <code>1</code>."
   14084         },
   14085         {
   14086           "vuid": "VUID-VkImageBlit-dstOffset-00251",
   14087           "text": " <code>dstOffset</code>[0].<code>z</code> and <code>dstOffset</code>[1].<code>z</code> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
   14088         },
   14089         {
   14090           "vuid": "VUID-VkImageBlit-dstImage-00252",
   14091           "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset</code>[0].z <strong class=\"purple\">must</strong> be <code>0</code> and <code>dstOffset</code>[1].z <strong class=\"purple\">must</strong> be <code>1</code>."
   14092         },
   14093         {
   14094           "vuid": "VUID-VkImageBlit-srcSubresource-parameter",
   14095           "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
   14096         },
   14097         {
   14098           "vuid": "VUID-VkImageBlit-dstSubresource-parameter",
   14099           "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
   14100         }
   14101       ]
   14102     },
   14103     "vkCmdResolveImage": {
   14104       "core": [
   14105         {
   14106           "vuid": "VUID-vkCmdResolveImage-pRegions-00253",
   14107           "text": " The source region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>srcImage</code>"
   14108         },
   14109         {
   14110           "vuid": "VUID-vkCmdResolveImage-pRegions-00254",
   14111           "text": " The destination region specified by each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be a region that is contained within <code>dstImage</code>"
   14112         },
   14113         {
   14114           "vuid": "VUID-vkCmdResolveImage-pRegions-00255",
   14115           "text": " The union of all source regions, and the union of all destination regions, specified by the elements of <code>pRegions</code>, <strong class=\"purple\">must</strong> not overlap in memory"
   14116         },
   14117         {
   14118           "vuid": "VUID-vkCmdResolveImage-srcImage-00256",
   14119           "text": " If <code>srcImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   14120         },
   14121         {
   14122           "vuid": "VUID-vkCmdResolveImage-srcImage-00257",
   14123           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> have a sample count equal to any valid sample count value other than <code>VK_SAMPLE_COUNT_1_BIT</code>"
   14124         },
   14125         {
   14126           "vuid": "VUID-vkCmdResolveImage-dstImage-00258",
   14127           "text": " If <code>dstImage</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   14128         },
   14129         {
   14130           "vuid": "VUID-vkCmdResolveImage-dstImage-00259",
   14131           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> have a sample count equal to <code>VK_SAMPLE_COUNT_1_BIT</code>"
   14132         },
   14133         {
   14134           "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00260",
   14135           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>srcImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
   14136         },
   14137         {
   14138           "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00262",
   14139           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> specify the layout of the image subresources of <code>dstImage</code> specified in <code>pRegions</code> at the time this command is executed on a <code>VkDevice</code>"
   14140         },
   14141         {
   14142           "vuid": "VUID-vkCmdResolveImage-dstImage-02003",
   14143           "text": " The <a href=\"#resources-image-format-features\">format features</a> of <code>dstImage</code> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT</code>."
   14144         },
   14145         {
   14146           "vuid": "VUID-vkCmdResolveImage-srcImage-01386",
   14147           "text": " <code>srcImage</code> and <code>dstImage</code> <strong class=\"purple\">must</strong> have been created with the same image format"
   14148         },
   14149         {
   14150           "vuid": "VUID-vkCmdResolveImage-srcSubresource-01709",
   14151           "text": " The <code>srcSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
   14152         },
   14153         {
   14154           "vuid": "VUID-vkCmdResolveImage-dstSubresource-01710",
   14155           "text": " The <code>dstSubresource.mipLevel</code> member of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
   14156         },
   14157         {
   14158           "vuid": "VUID-vkCmdResolveImage-srcSubresource-01711",
   14159           "text": " The <span class=\"eq\"><code>srcSubresource.baseArrayLayer</code> &#43; <code>srcSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>srcImage</code> was created"
   14160         },
   14161         {
   14162           "vuid": "VUID-vkCmdResolveImage-dstSubresource-01712",
   14163           "text": " The <span class=\"eq\"><code>dstSubresource.baseArrayLayer</code> &#43; <code>dstSubresource.layerCount</code></span> of each element of <code>pRegions</code> <strong class=\"purple\">must</strong> be less than or equal to the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>dstImage</code> was created"
   14164         },
   14165         {
   14166           "vuid": "VUID-vkCmdResolveImage-commandBuffer-parameter",
   14167           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   14168         },
   14169         {
   14170           "vuid": "VUID-vkCmdResolveImage-srcImage-parameter",
   14171           "text": " <code>srcImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   14172         },
   14173         {
   14174           "vuid": "VUID-vkCmdResolveImage-srcImageLayout-parameter",
   14175           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   14176         },
   14177         {
   14178           "vuid": "VUID-vkCmdResolveImage-dstImage-parameter",
   14179           "text": " <code>dstImage</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   14180         },
   14181         {
   14182           "vuid": "VUID-vkCmdResolveImage-dstImageLayout-parameter",
   14183           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   14184         },
   14185         {
   14186           "vuid": "VUID-vkCmdResolveImage-pRegions-parameter",
   14187           "text": " <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>regionCount</code> valid <code>VkImageResolve</code> structures"
   14188         },
   14189         {
   14190           "vuid": "VUID-vkCmdResolveImage-commandBuffer-recording",
   14191           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   14192         },
   14193         {
   14194           "vuid": "VUID-vkCmdResolveImage-commandBuffer-cmdpool",
   14195           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   14196         },
   14197         {
   14198           "vuid": "VUID-vkCmdResolveImage-renderpass",
   14199           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   14200         },
   14201         {
   14202           "vuid": "VUID-vkCmdResolveImage-regionCount-arraylength",
   14203           "text": " <code>regionCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   14204         },
   14205         {
   14206           "vuid": "VUID-vkCmdResolveImage-commonparent",
   14207           "text": " Each of <code>commandBuffer</code>, <code>dstImage</code>, and <code>srcImage</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   14208         }
   14209       ],
   14210       "!(VK_KHR_shared_presentable_image)": [
   14211         {
   14212           "vuid": "VUID-vkCmdResolveImage-srcImageLayout-00261",
   14213           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   14214         },
   14215         {
   14216           "vuid": "VUID-vkCmdResolveImage-dstImageLayout-00263",
   14217           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   14218         }
   14219       ],
   14220       "(VK_KHR_shared_presentable_image)": [
   14221         {
   14222           "vuid": "VUID-vkCmdResolveImage-srcImageLayout-01400",
   14223           "text": " <code>srcImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   14224         },
   14225         {
   14226           "vuid": "VUID-vkCmdResolveImage-dstImageLayout-01401",
   14227           "text": " <code>dstImageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code>, <code>VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>"
   14228         }
   14229       ],
   14230       "(VK_VERSION_1_1)": [
   14231         {
   14232           "vuid": "VUID-vkCmdResolveImage-commandBuffer-01837",
   14233           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>srcImage</code> <strong class=\"purple\">must</strong> not be a protected image"
   14234         },
   14235         {
   14236           "vuid": "VUID-vkCmdResolveImage-commandBuffer-01838",
   14237           "text": " If <code>commandBuffer</code> is an unprotected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be a protected image"
   14238         },
   14239         {
   14240           "vuid": "VUID-vkCmdResolveImage-commandBuffer-01839",
   14241           "text": " If <code>commandBuffer</code> is a protected command buffer, then <code>dstImage</code> <strong class=\"purple\">must</strong> not be an unprotected image"
   14242         }
   14243       ],
   14244       "(VK_EXT_fragment_density_map)": [
   14245         {
   14246           "vuid": "VUID-vkCmdResolveImage-dstImage-02546",
   14247           "text": " <code>dstImage</code> and <code>srcImage</code> <strong class=\"purple\">must</strong> not have been created with <code>flags</code> containing <code>VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT</code>"
   14248         }
   14249       ]
   14250     },
   14251     "VkImageResolve": {
   14252       "core": [
   14253         {
   14254           "vuid": "VUID-VkImageResolve-aspectMask-00266",
   14255           "text": " The <code>aspectMask</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> only contain <code>VK_IMAGE_ASPECT_COLOR_BIT</code>"
   14256         },
   14257         {
   14258           "vuid": "VUID-VkImageResolve-layerCount-00267",
   14259           "text": " The <code>layerCount</code> member of <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> match"
   14260         },
   14261         {
   14262           "vuid": "VUID-VkImageResolve-srcImage-00268",
   14263           "text": " If either of the calling command&#8217;s <code>srcImage</code> or <code>dstImage</code> parameters are of <a href=\"#VkImageType\">VkImageType</a> <code>VK_IMAGE_TYPE_3D</code>, the <code>baseArrayLayer</code> and <code>layerCount</code> members of both <code>srcSubresource</code> and <code>dstSubresource</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>1</code>, respectively"
   14264         },
   14265         {
   14266           "vuid": "VUID-VkImageResolve-srcOffset-00269",
   14267           "text": " <code>srcOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>srcOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource width"
   14268         },
   14269         {
   14270           "vuid": "VUID-VkImageResolve-srcOffset-00270",
   14271           "text": " <code>srcOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>srcOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource height"
   14272         },
   14273         {
   14274           "vuid": "VUID-VkImageResolve-srcImage-00271",
   14275           "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>srcOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   14276         },
   14277         {
   14278           "vuid": "VUID-VkImageResolve-srcOffset-00272",
   14279           "text": " <code>srcOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>srcOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the source image subresource depth"
   14280         },
   14281         {
   14282           "vuid": "VUID-VkImageResolve-srcImage-00273",
   14283           "text": " If the calling command&#8217;s <code>srcImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>srcOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   14284         },
   14285         {
   14286           "vuid": "VUID-VkImageResolve-dstOffset-00274",
   14287           "text": " <code>dstOffset.x</code> and <span class=\"eq\">(<code>extent.width</code> &#43; <code>dstOffset.x</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource width"
   14288         },
   14289         {
   14290           "vuid": "VUID-VkImageResolve-dstOffset-00275",
   14291           "text": " <code>dstOffset.y</code> and <span class=\"eq\">(<code>extent.height</code> &#43; <code>dstOffset.y</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource height"
   14292         },
   14293         {
   14294           "vuid": "VUID-VkImageResolve-dstImage-00276",
   14295           "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code>, then <code>dstOffset.y</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.height</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   14296         },
   14297         {
   14298           "vuid": "VUID-VkImageResolve-dstOffset-00277",
   14299           "text": " <code>dstOffset.z</code> and <span class=\"eq\">(<code>extent.depth</code> &#43; <code>dstOffset.z</code>)</span> <strong class=\"purple\">must</strong> both be greater than or equal to <code>0</code> and less than or equal to the destination image subresource depth"
   14300         },
   14301         {
   14302           "vuid": "VUID-VkImageResolve-dstImage-00278",
   14303           "text": " If the calling command&#8217;s <code>dstImage</code> is of type <code>VK_IMAGE_TYPE_1D</code> or <code>VK_IMAGE_TYPE_2D</code>, then <code>dstOffset.z</code> <strong class=\"purple\">must</strong> be <code>0</code> and <code>extent.depth</code> <strong class=\"purple\">must</strong> be <code>1</code>."
   14304         },
   14305         {
   14306           "vuid": "VUID-VkImageResolve-srcSubresource-parameter",
   14307           "text": " <code>srcSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
   14308         },
   14309         {
   14310           "vuid": "VUID-VkImageResolve-dstSubresource-parameter",
   14311           "text": " <code>dstSubresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresourceLayers</code> structure"
   14312         }
   14313       ]
   14314     },
   14315     "vkCmdWriteBufferMarkerAMD": {
   14316       "(VK_AMD_buffer_marker)": [
   14317         {
   14318           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798",
   14319           "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>dstBuffer</code> minus <code>4</code>."
   14320         },
   14321         {
   14322           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01799",
   14323           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created with <code>VK_BUFFER_USAGE_TRANSFER_DST_BIT</code> usage flag"
   14324         },
   14325         {
   14326           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-01800",
   14327           "text": " If <code>dstBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   14328         },
   14329         {
   14330           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801",
   14331           "text": " <code>dstOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   14332         },
   14333         {
   14334           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-parameter",
   14335           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   14336         },
   14337         {
   14338           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter",
   14339           "text": " <code>pipelineStage</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineStageFlagBits\">VkPipelineStageFlagBits</a> value"
   14340         },
   14341         {
   14342           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter",
   14343           "text": " <code>dstBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   14344         },
   14345         {
   14346           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-recording",
   14347           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   14348         },
   14349         {
   14350           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commandBuffer-cmdpool",
   14351           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support transfer, graphics, or compute operations"
   14352         },
   14353         {
   14354           "vuid": "VUID-vkCmdWriteBufferMarkerAMD-commonparent",
   14355           "text": " Both of <code>commandBuffer</code>, and <code>dstBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   14356         }
   14357       ]
   14358     },
   14359     "VkPipelineInputAssemblyStateCreateInfo": {
   14360       "core": [
   14361         {
   14362           "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00428",
   14363           "text": " If <code>topology</code> is <code>VK_PRIMITIVE_TOPOLOGY_POINT_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>, <code>primitiveRestartEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   14364         },
   14365         {
   14366           "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00429",
   14367           "text": " If the <a href=\"#features-geometryShader\">geometry shaders</a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be any of <code>VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY</code>, <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY</code> or <code>VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY</code>"
   14368         },
   14369         {
   14370           "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-00430",
   14371           "text": " If the <a href=\"#features-tessellationShader\">tessellation shaders</a> feature is not enabled, <code>topology</code> <strong class=\"purple\">must</strong> not be <code>VK_PRIMITIVE_TOPOLOGY_PATCH_LIST</code>"
   14372         },
   14373         {
   14374           "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-sType-sType",
   14375           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO</code>"
   14376         },
   14377         {
   14378           "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-pNext-pNext",
   14379           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   14380         },
   14381         {
   14382           "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-flags-zerobitmask",
   14383           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   14384         },
   14385         {
   14386           "vuid": "VUID-VkPipelineInputAssemblyStateCreateInfo-topology-parameter",
   14387           "text": " <code>topology</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPrimitiveTopology\">VkPrimitiveTopology</a> value"
   14388         }
   14389       ]
   14390     },
   14391     "vkCmdBindIndexBuffer": {
   14392       "core": [
   14393         {
   14394           "vuid": "VUID-vkCmdBindIndexBuffer-offset-00431",
   14395           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code>"
   14396         },
   14397         {
   14398           "vuid": "VUID-vkCmdBindIndexBuffer-offset-00432",
   14399           "text": " The sum of <code>offset</code> and the address of the range of <code>VkDeviceMemory</code> object that is backing <code>buffer</code>, <strong class=\"purple\">must</strong> be a multiple of the type indicated by <code>indexType</code>"
   14400         },
   14401         {
   14402           "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00433",
   14403           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDEX_BUFFER_BIT</code> flag"
   14404         },
   14405         {
   14406           "vuid": "VUID-vkCmdBindIndexBuffer-buffer-00434",
   14407           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   14408         },
   14409         {
   14410           "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-parameter",
   14411           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   14412         },
   14413         {
   14414           "vuid": "VUID-vkCmdBindIndexBuffer-buffer-parameter",
   14415           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   14416         },
   14417         {
   14418           "vuid": "VUID-vkCmdBindIndexBuffer-indexType-parameter",
   14419           "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
   14420         },
   14421         {
   14422           "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-recording",
   14423           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   14424         },
   14425         {
   14426           "vuid": "VUID-vkCmdBindIndexBuffer-commandBuffer-cmdpool",
   14427           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   14428         },
   14429         {
   14430           "vuid": "VUID-vkCmdBindIndexBuffer-commonparent",
   14431           "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   14432         }
   14433       ],
   14434       "(VK_NV_ray_tracing)": [
   14435         {
   14436           "vuid": "VUID-vkCmdBindIndexBuffer-indexType-02507",
   14437           "text": " <code>indexType</code> <strong class=\"purple\">must</strong> not be <code>VK_INDEX_TYPE_NONE_NV</code>."
   14438         }
   14439       ]
   14440     },
   14441     "vkCmdDraw": {
   14442       "core": [
   14443         {
   14444           "vuid": "VUID-vkCmdDraw-renderPass-00435",
   14445           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   14446         },
   14447         {
   14448           "vuid": "VUID-vkCmdDraw-subpass-00436",
   14449           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   14450         },
   14451         {
   14452           "vuid": "VUID-vkCmdDraw-None-00437",
   14453           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   14454         },
   14455         {
   14456           "vuid": "VUID-vkCmdDraw-None-00438",
   14457           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   14458         },
   14459         {
   14460           "vuid": "VUID-vkCmdDraw-None-00439",
   14461           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   14462         },
   14463         {
   14464           "vuid": "VUID-vkCmdDraw-None-00440",
   14465           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   14466         },
   14467         {
   14468           "vuid": "VUID-vkCmdDraw-None-00441",
   14469           "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
   14470         },
   14471         {
   14472           "vuid": "VUID-vkCmdDraw-None-00442",
   14473           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   14474         },
   14475         {
   14476           "vuid": "VUID-vkCmdDraw-None-00443",
   14477           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   14478         },
   14479         {
   14480           "vuid": "VUID-vkCmdDraw-None-00444",
   14481           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   14482         },
   14483         {
   14484           "vuid": "VUID-vkCmdDraw-None-00445",
   14485           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   14486         },
   14487         {
   14488           "vuid": "VUID-vkCmdDraw-None-00446",
   14489           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   14490         },
   14491         {
   14492           "vuid": "VUID-vkCmdDraw-None-00447",
   14493           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   14494         },
   14495         {
   14496           "vuid": "VUID-vkCmdDraw-None-00448",
   14497           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   14498         },
   14499         {
   14500           "vuid": "VUID-vkCmdDraw-None-00449",
   14501           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   14502         },
   14503         {
   14504           "vuid": "VUID-vkCmdDraw-None-01499",
   14505           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   14506         },
   14507         {
   14508           "vuid": "VUID-vkCmdDraw-None-02009",
   14509           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   14510         },
   14511         {
   14512           "vuid": "VUID-vkCmdDraw-commandBuffer-parameter",
   14513           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   14514         },
   14515         {
   14516           "vuid": "VUID-vkCmdDraw-commandBuffer-recording",
   14517           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   14518         },
   14519         {
   14520           "vuid": "VUID-vkCmdDraw-commandBuffer-cmdpool",
   14521           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   14522         },
   14523         {
   14524           "vuid": "VUID-vkCmdDraw-renderpass",
   14525           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   14526         }
   14527       ],
   14528       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   14529         {
   14530           "vuid": "VUID-vkCmdDraw-None-02010",
   14531           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
   14532         }
   14533       ],
   14534       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   14535         {
   14536           "vuid": "VUID-vkCmdDraw-None-00452",
   14537           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   14538         }
   14539       ],
   14540       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   14541         {
   14542           "vuid": "VUID-vkCmdDraw-filterCubic-02613",
   14543           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   14544         },
   14545         {
   14546           "vuid": "VUID-vkCmdDraw-filterCubicMinmax-02614",
   14547           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   14548         }
   14549       ],
   14550       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   14551         {
   14552           "vuid": "VUID-vkCmdDraw-maxMultiviewInstanceIndex-00453",
   14553           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   14554         }
   14555       ],
   14556       "(VK_VERSION_1_1)": [
   14557         {
   14558           "vuid": "VUID-vkCmdDraw-commandBuffer-01850",
   14559           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   14560         },
   14561         {
   14562           "vuid": "VUID-vkCmdDraw-commandBuffer-01851",
   14563           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
   14564         },
   14565         {
   14566           "vuid": "VUID-vkCmdDraw-commandBuffer-01852",
   14567           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   14568         }
   14569       ],
   14570       "(VK_EXT_sample_locations)": [
   14571         {
   14572           "vuid": "VUID-vkCmdDraw-sampleLocationsEnable-01512",
   14573           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   14574         }
   14575       ],
   14576       "(VK_NV_corner_sampled_image)": [
   14577         {
   14578           "vuid": "VUID-vkCmdDraw-flags-02042",
   14579           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   14580         }
   14581       ]
   14582     },
   14583     "vkCmdDrawIndexed": {
   14584       "core": [
   14585         {
   14586           "vuid": "VUID-vkCmdDrawIndexed-renderPass-00454",
   14587           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   14588         },
   14589         {
   14590           "vuid": "VUID-vkCmdDrawIndexed-subpass-00455",
   14591           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   14592         },
   14593         {
   14594           "vuid": "VUID-vkCmdDrawIndexed-None-00456",
   14595           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   14596         },
   14597         {
   14598           "vuid": "VUID-vkCmdDrawIndexed-None-00457",
   14599           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   14600         },
   14601         {
   14602           "vuid": "VUID-vkCmdDrawIndexed-None-00458",
   14603           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   14604         },
   14605         {
   14606           "vuid": "VUID-vkCmdDrawIndexed-None-00459",
   14607           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   14608         },
   14609         {
   14610           "vuid": "VUID-vkCmdDrawIndexed-None-00460",
   14611           "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
   14612         },
   14613         {
   14614           "vuid": "VUID-vkCmdDrawIndexed-None-00461",
   14615           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   14616         },
   14617         {
   14618           "vuid": "VUID-vkCmdDrawIndexed-None-00462",
   14619           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   14620         },
   14621         {
   14622           "vuid": "VUID-vkCmdDrawIndexed-indexSize-00463",
   14623           "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> &#43; <code>indexCount</code>) &#43; <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>"
   14624         },
   14625         {
   14626           "vuid": "VUID-vkCmdDrawIndexed-None-00464",
   14627           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   14628         },
   14629         {
   14630           "vuid": "VUID-vkCmdDrawIndexed-None-00465",
   14631           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   14632         },
   14633         {
   14634           "vuid": "VUID-vkCmdDrawIndexed-None-00466",
   14635           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   14636         },
   14637         {
   14638           "vuid": "VUID-vkCmdDrawIndexed-None-00467",
   14639           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   14640         },
   14641         {
   14642           "vuid": "VUID-vkCmdDrawIndexed-None-00468",
   14643           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   14644         },
   14645         {
   14646           "vuid": "VUID-vkCmdDrawIndexed-None-00469",
   14647           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   14648         },
   14649         {
   14650           "vuid": "VUID-vkCmdDrawIndexed-None-02011",
   14651           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   14652         },
   14653         {
   14654           "vuid": "VUID-vkCmdDrawIndexed-None-01500",
   14655           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   14656         },
   14657         {
   14658           "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-parameter",
   14659           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   14660         },
   14661         {
   14662           "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-recording",
   14663           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   14664         },
   14665         {
   14666           "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-cmdpool",
   14667           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   14668         },
   14669         {
   14670           "vuid": "VUID-vkCmdDrawIndexed-renderpass",
   14671           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   14672         }
   14673       ],
   14674       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   14675         {
   14676           "vuid": "VUID-vkCmdDrawIndexed-None-02012",
   14677           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
   14678         }
   14679       ],
   14680       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   14681         {
   14682           "vuid": "VUID-vkCmdDrawIndexed-None-00472",
   14683           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   14684         }
   14685       ],
   14686       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   14687         {
   14688           "vuid": "VUID-vkCmdDrawIndexed-filterCubic-02615",
   14689           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   14690         },
   14691         {
   14692           "vuid": "VUID-vkCmdDrawIndexed-filterCubicMinmax-02616",
   14693           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   14694         }
   14695       ],
   14696       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   14697         {
   14698           "vuid": "VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-00473",
   14699           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   14700         }
   14701       ],
   14702       "(VK_VERSION_1_1)": [
   14703         {
   14704           "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01853",
   14705           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   14706         },
   14707         {
   14708           "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01854",
   14709           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
   14710         },
   14711         {
   14712           "vuid": "VUID-vkCmdDrawIndexed-commandBuffer-01855",
   14713           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   14714         }
   14715       ],
   14716       "(VK_EXT_sample_locations)": [
   14717         {
   14718           "vuid": "VUID-vkCmdDrawIndexed-sampleLocationsEnable-01513",
   14719           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   14720         }
   14721       ],
   14722       "(VK_NV_corner_sampled_image)": [
   14723         {
   14724           "vuid": "VUID-vkCmdDrawIndexed-flags-02043",
   14725           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   14726         }
   14727       ]
   14728     },
   14729     "vkCmdDrawIndirect": {
   14730       "core": [
   14731         {
   14732           "vuid": "VUID-vkCmdDrawIndirect-buffer-00474",
   14733           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   14734         },
   14735         {
   14736           "vuid": "VUID-vkCmdDrawIndirect-buffer-01660",
   14737           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   14738         },
   14739         {
   14740           "vuid": "VUID-vkCmdDrawIndirect-offset-00475",
   14741           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   14742         },
   14743         {
   14744           "vuid": "VUID-vkCmdDrawIndirect-drawCount-00476",
   14745           "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)"
   14746         },
   14747         {
   14748           "vuid": "VUID-vkCmdDrawIndirect-drawCount-00477",
   14749           "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
   14750         },
   14751         {
   14752           "vuid": "VUID-vkCmdDrawIndirect-firstInstance-00478",
   14753           "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
   14754         },
   14755         {
   14756           "vuid": "VUID-vkCmdDrawIndirect-renderPass-00479",
   14757           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   14758         },
   14759         {
   14760           "vuid": "VUID-vkCmdDrawIndirect-subpass-00480",
   14761           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   14762         },
   14763         {
   14764           "vuid": "VUID-vkCmdDrawIndirect-None-00481",
   14765           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   14766         },
   14767         {
   14768           "vuid": "VUID-vkCmdDrawIndirect-None-00482",
   14769           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   14770         },
   14771         {
   14772           "vuid": "VUID-vkCmdDrawIndirect-None-00483",
   14773           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   14774         },
   14775         {
   14776           "vuid": "VUID-vkCmdDrawIndirect-None-00484",
   14777           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   14778         },
   14779         {
   14780           "vuid": "VUID-vkCmdDrawIndirect-None-00485",
   14781           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   14782         },
   14783         {
   14784           "vuid": "VUID-vkCmdDrawIndirect-None-00486",
   14785           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   14786         },
   14787         {
   14788           "vuid": "VUID-vkCmdDrawIndirect-drawCount-00487",
   14789           "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   14790         },
   14791         {
   14792           "vuid": "VUID-vkCmdDrawIndirect-drawCount-00488",
   14793           "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<a href=\"#VkDrawIndirectCommand\">VkDrawIndirectCommand</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   14794         },
   14795         {
   14796           "vuid": "VUID-vkCmdDrawIndirect-drawCount-00489",
   14797           "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
   14798         },
   14799         {
   14800           "vuid": "VUID-vkCmdDrawIndirect-None-00490",
   14801           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   14802         },
   14803         {
   14804           "vuid": "VUID-vkCmdDrawIndirect-None-00491",
   14805           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   14806         },
   14807         {
   14808           "vuid": "VUID-vkCmdDrawIndirect-None-00492",
   14809           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   14810         },
   14811         {
   14812           "vuid": "VUID-vkCmdDrawIndirect-None-00493",
   14813           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   14814         },
   14815         {
   14816           "vuid": "VUID-vkCmdDrawIndirect-None-00494",
   14817           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   14818         },
   14819         {
   14820           "vuid": "VUID-vkCmdDrawIndirect-None-00495",
   14821           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   14822         },
   14823         {
   14824           "vuid": "VUID-vkCmdDrawIndirect-None-02013",
   14825           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   14826         },
   14827         {
   14828           "vuid": "VUID-vkCmdDrawIndirect-None-01501",
   14829           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   14830         },
   14831         {
   14832           "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-parameter",
   14833           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   14834         },
   14835         {
   14836           "vuid": "VUID-vkCmdDrawIndirect-buffer-parameter",
   14837           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   14838         },
   14839         {
   14840           "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-recording",
   14841           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   14842         },
   14843         {
   14844           "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-cmdpool",
   14845           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   14846         },
   14847         {
   14848           "vuid": "VUID-vkCmdDrawIndirect-renderpass",
   14849           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   14850         },
   14851         {
   14852           "vuid": "VUID-vkCmdDrawIndirect-commonparent",
   14853           "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   14854         }
   14855       ],
   14856       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   14857         {
   14858           "vuid": "VUID-vkCmdDrawIndirect-None-02014",
   14859           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
   14860         }
   14861       ],
   14862       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   14863         {
   14864           "vuid": "VUID-vkCmdDrawIndirect-None-00498",
   14865           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   14866         }
   14867       ],
   14868       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   14869         {
   14870           "vuid": "VUID-vkCmdDrawIndirect-filterCubic-02617",
   14871           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   14872         },
   14873         {
   14874           "vuid": "VUID-vkCmdDrawIndirect-filterCubicMinmax-02618",
   14875           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   14876         }
   14877       ],
   14878       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   14879         {
   14880           "vuid": "VUID-vkCmdDrawIndirect-maxMultiviewInstanceIndex-00499",
   14881           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   14882         }
   14883       ],
   14884       "(VK_VERSION_1_1)": [
   14885         {
   14886           "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-02640",
   14887           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   14888         },
   14889         {
   14890           "vuid": "VUID-vkCmdDrawIndirect-commandBuffer-01856",
   14891           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   14892         }
   14893       ],
   14894       "(VK_EXT_sample_locations)": [
   14895         {
   14896           "vuid": "VUID-vkCmdDrawIndirect-sampleLocationsEnable-01514",
   14897           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   14898         }
   14899       ],
   14900       "(VK_NV_corner_sampled_image)": [
   14901         {
   14902           "vuid": "VUID-vkCmdDrawIndirect-flags-02044",
   14903           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   14904         }
   14905       ]
   14906     },
   14907     "VkDrawIndirectCommand": {
   14908       "core": [
   14909         {
   14910           "vuid": "VUID-VkDrawIndirectCommand-None-00500",
   14911           "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
   14912         },
   14913         {
   14914           "vuid": "VUID-VkDrawIndirectCommand-firstInstance-00501",
   14915           "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   14916         }
   14917       ]
   14918     },
   14919     "vkCmdDrawIndirectCountKHR": {
   14920       "(VK_KHR_draw_indirect_count)": [
   14921         {
   14922           "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-03104",
   14923           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   14924         },
   14925         {
   14926           "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-03105",
   14927           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   14928         },
   14929         {
   14930           "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03106",
   14931           "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   14932         },
   14933         {
   14934           "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03107",
   14935           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   14936         },
   14937         {
   14938           "vuid": "VUID-vkCmdDrawIndirectCountKHR-offset-03108",
   14939           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   14940         },
   14941         {
   14942           "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBufferOffset-03109",
   14943           "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   14944         },
   14945         {
   14946           "vuid": "VUID-vkCmdDrawIndirectCountKHR-stride-03110",
   14947           "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to sizeof(<code>VkDrawIndirectCommand</code>)"
   14948         },
   14949         {
   14950           "vuid": "VUID-vkCmdDrawIndirectCountKHR-maxDrawCount-03111",
   14951           "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   14952         },
   14953         {
   14954           "vuid": "VUID-vkCmdDrawIndirectCountKHR-firstInstance-03112",
   14955           "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
   14956         },
   14957         {
   14958           "vuid": "VUID-vkCmdDrawIndirectCountKHR-renderPass-03113",
   14959           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   14960         },
   14961         {
   14962           "vuid": "VUID-vkCmdDrawIndirectCountKHR-subpass-03114",
   14963           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   14964         },
   14965         {
   14966           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03115",
   14967           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   14968         },
   14969         {
   14970           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03116",
   14971           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   14972         },
   14973         {
   14974           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03117",
   14975           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   14976         },
   14977         {
   14978           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03118",
   14979           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   14980         },
   14981         {
   14982           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03119",
   14983           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   14984         },
   14985         {
   14986           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03120",
   14987           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   14988         },
   14989         {
   14990           "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03121",
   14991           "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   14992         },
   14993         {
   14994           "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03122",
   14995           "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; sizeof(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   14996         },
   14997         {
   14998           "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-03123",
   14999           "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
   15000         },
   15001         {
   15002           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03124",
   15003           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   15004         },
   15005         {
   15006           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03125",
   15007           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   15008         },
   15009         {
   15010           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03126",
   15011           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   15012         },
   15013         {
   15014           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03127",
   15015           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   15016         },
   15017         {
   15018           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03128",
   15019           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15020         },
   15021         {
   15022           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03129",
   15023           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15024         },
   15025         {
   15026           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02015",
   15027           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   15028         },
   15029         {
   15030           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03131",
   15031           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   15032         },
   15033         {
   15034           "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-parameter",
   15035           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   15036         },
   15037         {
   15038           "vuid": "VUID-vkCmdDrawIndirectCountKHR-buffer-parameter",
   15039           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15040         },
   15041         {
   15042           "vuid": "VUID-vkCmdDrawIndirectCountKHR-countBuffer-parameter",
   15043           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15044         },
   15045         {
   15046           "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-recording",
   15047           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   15048         },
   15049         {
   15050           "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-cmdpool",
   15051           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   15052         },
   15053         {
   15054           "vuid": "VUID-vkCmdDrawIndirectCountKHR-renderpass",
   15055           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   15056         },
   15057         {
   15058           "vuid": "VUID-vkCmdDrawIndirectCountKHR-commonparent",
   15059           "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   15060         }
   15061       ],
   15062       "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   15063         {
   15064           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-02016",
   15065           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
   15066         }
   15067       ],
   15068       "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   15069         {
   15070           "vuid": "VUID-vkCmdDrawIndirectCountKHR-None-03170",
   15071           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   15072         }
   15073       ],
   15074       "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   15075         {
   15076           "vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubic-02619",
   15077           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   15078         },
   15079         {
   15080           "vuid": "VUID-vkCmdDrawIndirectCountKHR-filterCubicMinmax-02620",
   15081           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   15082         }
   15083       ],
   15084       "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
   15085         {
   15086           "vuid": "VUID-vkCmdDrawIndirectCountKHR-maxMultiviewInstanceIndex-03132",
   15087           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   15088         }
   15089       ],
   15090       "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
   15091         {
   15092           "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-02641",
   15093           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   15094         },
   15095         {
   15096           "vuid": "VUID-vkCmdDrawIndirectCountKHR-commandBuffer-03133",
   15097           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   15098         }
   15099       ],
   15100       "(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
   15101         {
   15102           "vuid": "VUID-vkCmdDrawIndirectCountKHR-sampleLocationsEnable-03171",
   15103           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   15104         }
   15105       ],
   15106       "(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
   15107         {
   15108           "vuid": "VUID-vkCmdDrawIndirectCountKHR-flags-02045",
   15109           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   15110         }
   15111       ]
   15112     },
   15113     "vkCmdDrawIndirectCountAMD": {
   15114       "(VK_AMD_draw_indirect_count)": [
   15115         {
   15116           "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01661",
   15117           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   15118         },
   15119         {
   15120           "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-01662",
   15121           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   15122         },
   15123         {
   15124           "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01663",
   15125           "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   15126         },
   15127         {
   15128           "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-01664",
   15129           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   15130         },
   15131         {
   15132           "vuid": "VUID-vkCmdDrawIndirectCountAMD-offset-00502",
   15133           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   15134         },
   15135         {
   15136           "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBufferOffset-00503",
   15137           "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   15138         },
   15139         {
   15140           "vuid": "VUID-vkCmdDrawIndirectCountAMD-stride-00504",
   15141           "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndirectCommand</code>)"
   15142         },
   15143         {
   15144           "vuid": "VUID-vkCmdDrawIndirectCountAMD-maxDrawCount-00505",
   15145           "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15146         },
   15147         {
   15148           "vuid": "VUID-vkCmdDrawIndirectCountAMD-firstInstance-00506",
   15149           "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
   15150         },
   15151         {
   15152           "vuid": "VUID-vkCmdDrawIndirectCountAMD-renderPass-00507",
   15153           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   15154         },
   15155         {
   15156           "vuid": "VUID-vkCmdDrawIndirectCountAMD-subpass-00508",
   15157           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   15158         },
   15159         {
   15160           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00509",
   15161           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15162         },
   15163         {
   15164           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00510",
   15165           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15166         },
   15167         {
   15168           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00511",
   15169           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   15170         },
   15171         {
   15172           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00512",
   15173           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   15174         },
   15175         {
   15176           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00513",
   15177           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   15178         },
   15179         {
   15180           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00514",
   15181           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   15182         },
   15183         {
   15184           "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00515",
   15185           "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15186         },
   15187         {
   15188           "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00516",
   15189           "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15190         },
   15191         {
   15192           "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-00517",
   15193           "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
   15194         },
   15195         {
   15196           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00518",
   15197           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   15198         },
   15199         {
   15200           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00519",
   15201           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   15202         },
   15203         {
   15204           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00520",
   15205           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   15206         },
   15207         {
   15208           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00521",
   15209           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   15210         },
   15211         {
   15212           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00522",
   15213           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15214         },
   15215         {
   15216           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-00523",
   15217           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15218         },
   15219         {
   15220           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-02017",
   15221           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   15222         },
   15223         {
   15224           "vuid": "VUID-vkCmdDrawIndirectCountAMD-None-01502",
   15225           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   15226         },
   15227         {
   15228           "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-parameter",
   15229           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   15230         },
   15231         {
   15232           "vuid": "VUID-vkCmdDrawIndirectCountAMD-buffer-parameter",
   15233           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15234         },
   15235         {
   15236           "vuid": "VUID-vkCmdDrawIndirectCountAMD-countBuffer-parameter",
   15237           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15238         },
   15239         {
   15240           "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-recording",
   15241           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   15242         },
   15243         {
   15244           "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-cmdpool",
   15245           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   15246         },
   15247         {
   15248           "vuid": "VUID-vkCmdDrawIndirectCountAMD-renderpass",
   15249           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   15250         },
   15251         {
   15252           "vuid": "VUID-vkCmdDrawIndirectCountAMD-commonparent",
   15253           "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   15254         }
   15255       ],
   15256       "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
   15257         {
   15258           "vuid": "VUID-vkCmdDrawIndirectCountAMD-maxMultiviewInstanceIndex-00525",
   15259           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   15260         }
   15261       ],
   15262       "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [
   15263         {
   15264           "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-02642",
   15265           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   15266         },
   15267         {
   15268           "vuid": "VUID-vkCmdDrawIndirectCountAMD-commandBuffer-01859",
   15269           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   15270         }
   15271       ],
   15272       "(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [
   15273         {
   15274           "vuid": "VUID-vkCmdDrawIndirectCountAMD-sampleLocationsEnable-01515",
   15275           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   15276         }
   15277       ],
   15278       "(VK_AMD_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
   15279         {
   15280           "vuid": "VUID-vkCmdDrawIndirectCountAMD-flags-02046",
   15281           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   15282         }
   15283       ]
   15284     },
   15285     "vkCmdDrawIndexedIndirect": {
   15286       "core": [
   15287         {
   15288           "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-00526",
   15289           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   15290         },
   15291         {
   15292           "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-01665",
   15293           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   15294         },
   15295         {
   15296           "vuid": "VUID-vkCmdDrawIndexedIndirect-offset-00527",
   15297           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   15298         },
   15299         {
   15300           "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00528",
   15301           "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>)"
   15302         },
   15303         {
   15304           "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00529",
   15305           "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
   15306         },
   15307         {
   15308           "vuid": "VUID-vkCmdDrawIndexedIndirect-firstInstance-00530",
   15309           "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
   15310         },
   15311         {
   15312           "vuid": "VUID-vkCmdDrawIndexedIndirect-renderPass-00531",
   15313           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   15314         },
   15315         {
   15316           "vuid": "VUID-vkCmdDrawIndexedIndirect-subpass-00532",
   15317           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   15318         },
   15319         {
   15320           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00533",
   15321           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15322         },
   15323         {
   15324           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00534",
   15325           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15326         },
   15327         {
   15328           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00535",
   15329           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   15330         },
   15331         {
   15332           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00536",
   15333           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   15334         },
   15335         {
   15336           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00537",
   15337           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   15338         },
   15339         {
   15340           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00538",
   15341           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   15342         },
   15343         {
   15344           "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00539",
   15345           "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15346         },
   15347         {
   15348           "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00540",
   15349           "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15350         },
   15351         {
   15352           "vuid": "VUID-vkCmdDrawIndexedIndirect-drawCount-00541",
   15353           "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
   15354         },
   15355         {
   15356           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00542",
   15357           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   15358         },
   15359         {
   15360           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00543",
   15361           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   15362         },
   15363         {
   15364           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00544",
   15365           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   15366         },
   15367         {
   15368           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00545",
   15369           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   15370         },
   15371         {
   15372           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00546",
   15373           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15374         },
   15375         {
   15376           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00547",
   15377           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15378         },
   15379         {
   15380           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02018",
   15381           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   15382         },
   15383         {
   15384           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-01503",
   15385           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   15386         },
   15387         {
   15388           "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-parameter",
   15389           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   15390         },
   15391         {
   15392           "vuid": "VUID-vkCmdDrawIndexedIndirect-buffer-parameter",
   15393           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15394         },
   15395         {
   15396           "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-recording",
   15397           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   15398         },
   15399         {
   15400           "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-cmdpool",
   15401           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   15402         },
   15403         {
   15404           "vuid": "VUID-vkCmdDrawIndexedIndirect-renderpass",
   15405           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   15406         },
   15407         {
   15408           "vuid": "VUID-vkCmdDrawIndexedIndirect-commonparent",
   15409           "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   15410         }
   15411       ],
   15412       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   15413         {
   15414           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-02019",
   15415           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
   15416         }
   15417       ],
   15418       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   15419         {
   15420           "vuid": "VUID-vkCmdDrawIndexedIndirect-None-00550",
   15421           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   15422         }
   15423       ],
   15424       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   15425         {
   15426           "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubic-02621",
   15427           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   15428         },
   15429         {
   15430           "vuid": "VUID-vkCmdDrawIndexedIndirect-filterCubicMinmax-02622",
   15431           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   15432         }
   15433       ],
   15434       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   15435         {
   15436           "vuid": "VUID-vkCmdDrawIndexedIndirect-maxMultiviewInstanceIndex-00551",
   15437           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   15438         }
   15439       ],
   15440       "(VK_VERSION_1_1)": [
   15441         {
   15442           "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-02643",
   15443           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   15444         },
   15445         {
   15446           "vuid": "VUID-vkCmdDrawIndexedIndirect-commandBuffer-01862",
   15447           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   15448         }
   15449       ],
   15450       "(VK_EXT_sample_locations)": [
   15451         {
   15452           "vuid": "VUID-vkCmdDrawIndexedIndirect-sampleLocationsEnable-01516",
   15453           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   15454         }
   15455       ],
   15456       "(VK_NV_corner_sampled_image)": [
   15457         {
   15458           "vuid": "VUID-vkCmdDrawIndexedIndirect-flags-02047",
   15459           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   15460         }
   15461       ]
   15462     },
   15463     "VkDrawIndexedIndirectCommand": {
   15464       "core": [
   15465         {
   15466           "vuid": "VUID-VkDrawIndexedIndirectCommand-None-00552",
   15467           "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
   15468         },
   15469         {
   15470           "vuid": "VUID-VkDrawIndexedIndirectCommand-indexSize-00553",
   15471           "text": " <span class=\"eq\">(<code>indexSize</code> * (<code>firstIndex</code> &#43; <code>indexCount</code>) &#43; <code>offset</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to the size of the bound index buffer, with <code>indexSize</code> being based on the type specified by <code>indexType</code>, where the index buffer, <code>indexType</code>, and <code>offset</code> are specified via <code>vkCmdBindIndexBuffer</code>"
   15472         },
   15473         {
   15474           "vuid": "VUID-VkDrawIndexedIndirectCommand-firstInstance-00554",
   15475           "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, <code>firstInstance</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   15476         }
   15477       ]
   15478     },
   15479     "vkCmdDrawIndexedIndirectCountKHR": {
   15480       "(VK_KHR_draw_indirect_count)": [
   15481         {
   15482           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-03136",
   15483           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   15484         },
   15485         {
   15486           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-03137",
   15487           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   15488         },
   15489         {
   15490           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03138",
   15491           "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   15492         },
   15493         {
   15494           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03139",
   15495           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   15496         },
   15497         {
   15498           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-offset-03140",
   15499           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   15500         },
   15501         {
   15502           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBufferOffset-03141",
   15503           "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   15504         },
   15505         {
   15506           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-stride-03142",
   15507           "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to sizeof(<code>VkDrawIndexedIndirectCommand</code>)"
   15508         },
   15509         {
   15510           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxDrawCount-03143",
   15511           "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15512         },
   15513         {
   15514           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-firstInstance-03144",
   15515           "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
   15516         },
   15517         {
   15518           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderPass-03145",
   15519           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   15520         },
   15521         {
   15522           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-subpass-03146",
   15523           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   15524         },
   15525         {
   15526           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03147",
   15527           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15528         },
   15529         {
   15530           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03148",
   15531           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15532         },
   15533         {
   15534           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03149",
   15535           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   15536         },
   15537         {
   15538           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03150",
   15539           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   15540         },
   15541         {
   15542           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03151",
   15543           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   15544         },
   15545         {
   15546           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03152",
   15547           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   15548         },
   15549         {
   15550           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03153",
   15551           "text": " If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15552         },
   15553         {
   15554           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-03154",
   15555           "text": " If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; sizeof(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15556         },
   15557         {
   15558           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-drawCount-03155",
   15559           "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
   15560         },
   15561         {
   15562           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03156",
   15563           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   15564         },
   15565         {
   15566           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03157",
   15567           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   15568         },
   15569         {
   15570           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03158",
   15571           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   15572         },
   15573         {
   15574           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03159",
   15575           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   15576         },
   15577         {
   15578           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03160",
   15579           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15580         },
   15581         {
   15582           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03161",
   15583           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15584         },
   15585         {
   15586           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02020",
   15587           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   15588         },
   15589         {
   15590           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03163",
   15591           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   15592         },
   15593         {
   15594           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-parameter",
   15595           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   15596         },
   15597         {
   15598           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-buffer-parameter",
   15599           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15600         },
   15601         {
   15602           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-countBuffer-parameter",
   15603           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15604         },
   15605         {
   15606           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-recording",
   15607           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   15608         },
   15609         {
   15610           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-cmdpool",
   15611           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   15612         },
   15613         {
   15614           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-renderpass",
   15615           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   15616         },
   15617         {
   15618           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commonparent",
   15619           "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   15620         }
   15621       ],
   15622       "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   15623         {
   15624           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-02021",
   15625           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
   15626         }
   15627       ],
   15628       "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   15629         {
   15630           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-None-03173",
   15631           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   15632         }
   15633       ],
   15634       "(VK_KHR_draw_indirect_count)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   15635         {
   15636           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubic-02623",
   15637           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   15638         },
   15639         {
   15640           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-filterCubicMinmax-02624",
   15641           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   15642         }
   15643       ],
   15644       "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
   15645         {
   15646           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-maxMultiviewInstanceIndex-03164",
   15647           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   15648         }
   15649       ],
   15650       "(VK_KHR_draw_indirect_count)+(VK_VERSION_1_1)": [
   15651         {
   15652           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-02644",
   15653           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   15654         },
   15655         {
   15656           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-commandBuffer-03165",
   15657           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   15658         }
   15659       ],
   15660       "(VK_KHR_draw_indirect_count)+(VK_EXT_sample_locations)": [
   15661         {
   15662           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-sampleLocationsEnable-03174",
   15663           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   15664         }
   15665       ],
   15666       "(VK_KHR_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
   15667         {
   15668           "vuid": "VUID-vkCmdDrawIndexedIndirectCountKHR-flags-02048",
   15669           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   15670         }
   15671       ]
   15672     },
   15673     "vkCmdDrawIndexedIndirectCountAMD": {
   15674       "(VK_AMD_draw_indirect_count)": [
   15675         {
   15676           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01666",
   15677           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   15678         },
   15679         {
   15680           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-01667",
   15681           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   15682         },
   15683         {
   15684           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01668",
   15685           "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   15686         },
   15687         {
   15688           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-01669",
   15689           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   15690         },
   15691         {
   15692           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-offset-00555",
   15693           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   15694         },
   15695         {
   15696           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBufferOffset-00556",
   15697           "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   15698         },
   15699         {
   15700           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-stride-00557",
   15701           "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>)"
   15702         },
   15703         {
   15704           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxDrawCount-00558",
   15705           "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15706         },
   15707         {
   15708           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-firstInstance-00559",
   15709           "text": " If the <a href=\"#features-drawIndirectFirstInstance\">drawIndirectFirstInstance</a> feature is not enabled, all the <code>firstInstance</code> members of the <code>VkDrawIndexedIndirectCommand</code> structures accessed by this command <strong class=\"purple\">must</strong> be <code>0</code>"
   15710         },
   15711         {
   15712           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderPass-00560",
   15713           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   15714         },
   15715         {
   15716           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-subpass-00561",
   15717           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   15718         },
   15719         {
   15720           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00562",
   15721           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15722         },
   15723         {
   15724           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00563",
   15725           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15726         },
   15727         {
   15728           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00564",
   15729           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   15730         },
   15731         {
   15732           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00565",
   15733           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   15734         },
   15735         {
   15736           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00566",
   15737           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   15738         },
   15739         {
   15740           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00567",
   15741           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   15742         },
   15743         {
   15744           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00568",
   15745           "text": " If count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15746         },
   15747         {
   15748           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-00569",
   15749           "text": " If count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawIndexedIndirectCommand</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   15750         },
   15751         {
   15752           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-drawCount-00570",
   15753           "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
   15754         },
   15755         {
   15756           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00571",
   15757           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   15758         },
   15759         {
   15760           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00572",
   15761           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   15762         },
   15763         {
   15764           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00573",
   15765           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   15766         },
   15767         {
   15768           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00574",
   15769           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   15770         },
   15771         {
   15772           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00575",
   15773           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15774         },
   15775         {
   15776           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-00576",
   15777           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   15778         },
   15779         {
   15780           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-02022",
   15781           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   15782         },
   15783         {
   15784           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-None-01504",
   15785           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   15786         },
   15787         {
   15788           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-parameter",
   15789           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   15790         },
   15791         {
   15792           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-buffer-parameter",
   15793           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15794         },
   15795         {
   15796           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-countBuffer-parameter",
   15797           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15798         },
   15799         {
   15800           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-recording",
   15801           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   15802         },
   15803         {
   15804           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-cmdpool",
   15805           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   15806         },
   15807         {
   15808           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-renderpass",
   15809           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   15810         },
   15811         {
   15812           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commonparent",
   15813           "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   15814         }
   15815       ],
   15816       "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1,VK_KHR_multiview)": [
   15817         {
   15818           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-maxMultiviewInstanceIndex-00578",
   15819           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   15820         }
   15821       ],
   15822       "(VK_AMD_draw_indirect_count)+(VK_VERSION_1_1)": [
   15823         {
   15824           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-02645",
   15825           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   15826         },
   15827         {
   15828           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-commandBuffer-01865",
   15829           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   15830         }
   15831       ],
   15832       "(VK_AMD_draw_indirect_count)+(VK_EXT_sample_locations)": [
   15833         {
   15834           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-sampleLocationsEnable-01517",
   15835           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   15836         }
   15837       ],
   15838       "(VK_AMD_draw_indirect_count)+(VK_NV_corner_sampled_image)": [
   15839         {
   15840           "vuid": "VUID-vkCmdDrawIndexedIndirectCountAMD-flags-02049",
   15841           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   15842         }
   15843       ]
   15844     },
   15845     "vkCmdDrawIndirectByteCountEXT": {
   15846       "(VK_EXT_transform_feedback)": [
   15847         {
   15848           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedback-02287",
   15849           "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
   15850         },
   15851         {
   15852           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-transformFeedbackDraw-02288",
   15853           "text": " The implementation <strong class=\"purple\">must</strong> support <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackDraw</code>"
   15854         },
   15855         {
   15856           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-vertexStride-02289",
   15857           "text": " <code>vertexStride</code> <strong class=\"purple\">must</strong> be greater than 0 and less than or equal to <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxTransformFeedbackBufferDataStride</code>"
   15858         },
   15859         {
   15860           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-02290",
   15861           "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   15862         },
   15863         {
   15864           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderPass-02291",
   15865           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   15866         },
   15867         {
   15868           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-subpass-02292",
   15869           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   15870         },
   15871         {
   15872           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02293",
   15873           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15874         },
   15875         {
   15876           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02294",
   15877           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   15878         },
   15879         {
   15880           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02295",
   15881           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   15882         },
   15883         {
   15884           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02296",
   15885           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   15886         },
   15887         {
   15888           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02297",
   15889           "text": " For a given vertex buffer binding, any attribute data fetched <strong class=\"purple\">must</strong> be entirely contained within the corresponding vertex buffer binding, as described in <a href=\"#fxvertex-input\">Vertex Input Description</a>"
   15890         },
   15891         {
   15892           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02298",
   15893           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   15894         },
   15895         {
   15896           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02299",
   15897           "text": " If the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   15898         },
   15899         {
   15900           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02300",
   15901           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   15902         },
   15903         {
   15904           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02301",
   15905           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   15906         },
   15907         {
   15908           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02302",
   15909           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   15910         },
   15911         {
   15912           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02303",
   15913           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   15914         },
   15915         {
   15916           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02304",
   15917           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command"
   15918         },
   15919         {
   15920           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02305",
   15921           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
   15922         },
   15923         {
   15924           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-parameter",
   15925           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   15926         },
   15927         {
   15928           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-counterBuffer-parameter",
   15929           "text": " <code>counterBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   15930         },
   15931         {
   15932           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-recording",
   15933           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   15934         },
   15935         {
   15936           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-cmdpool",
   15937           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   15938         },
   15939         {
   15940           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-renderpass",
   15941           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   15942         },
   15943         {
   15944           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commonparent",
   15945           "text": " Both of <code>commandBuffer</code>, and <code>counterBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   15946         }
   15947       ],
   15948       "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   15949         {
   15950           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02306",
   15951           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>"
   15952         }
   15953       ],
   15954       "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   15955         {
   15956           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-None-02307",
   15957           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   15958         }
   15959       ],
   15960       "(VK_EXT_transform_feedback)+(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   15961         {
   15962           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubic-02625",
   15963           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   15964         },
   15965         {
   15966           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-filterCubicMinmax-02626",
   15967           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   15968         }
   15969       ],
   15970       "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
   15971         {
   15972           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-maxMultiviewInstanceIndex-02308",
   15973           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>"
   15974         }
   15975       ],
   15976       "(VK_EXT_transform_feedback)+(VK_VERSION_1_1)": [
   15977         {
   15978           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02646",
   15979           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   15980         },
   15981         {
   15982           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-commandBuffer-02309",
   15983           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer"
   15984         }
   15985       ],
   15986       "(VK_EXT_transform_feedback)+(VK_EXT_sample_locations)": [
   15987         {
   15988           "vuid": "VUID-vkCmdDrawIndirectByteCountEXT-sampleLocationsEnable-02312",
   15989           "text": " If the bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   15990         }
   15991       ]
   15992     },
   15993     "vkCmdBeginConditionalRenderingEXT": {
   15994       "(VK_EXT_conditional_rendering)": [
   15995         {
   15996           "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-None-01980",
   15997           "text": " Conditional rendering <strong class=\"purple\">must</strong> not already be <a href=\"#active-conditional-rendering\">active</a>"
   15998         },
   15999         {
   16000           "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-parameter",
   16001           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16002         },
   16003         {
   16004           "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-pConditionalRenderingBegin-parameter",
   16005           "text": " <code>pConditionalRenderingBegin</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkConditionalRenderingBeginInfoEXT</code> structure"
   16006         },
   16007         {
   16008           "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-recording",
   16009           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16010         },
   16011         {
   16012           "vuid": "VUID-vkCmdBeginConditionalRenderingEXT-commandBuffer-cmdpool",
   16013           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   16014         }
   16015       ]
   16016     },
   16017     "VkConditionalRenderingBeginInfoEXT": {
   16018       "(VK_EXT_conditional_rendering)": [
   16019         {
   16020           "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01981",
   16021           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   16022         },
   16023         {
   16024           "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-01982",
   16025           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT</code> bit set"
   16026         },
   16027         {
   16028           "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01983",
   16029           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than the size of <code>buffer</code> by at least 32 bits."
   16030         },
   16031         {
   16032           "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-offset-01984",
   16033           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of 4"
   16034         },
   16035         {
   16036           "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-sType-sType",
   16037           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT</code>"
   16038         },
   16039         {
   16040           "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-pNext-pNext",
   16041           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   16042         },
   16043         {
   16044           "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-buffer-parameter",
   16045           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   16046         },
   16047         {
   16048           "vuid": "VUID-VkConditionalRenderingBeginInfoEXT-flags-parameter",
   16049           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkConditionalRenderingFlagBitsEXT\">VkConditionalRenderingFlagBitsEXT</a> values"
   16050         }
   16051       ]
   16052     },
   16053     "vkCmdEndConditionalRenderingEXT": {
   16054       "(VK_EXT_conditional_rendering)": [
   16055         {
   16056           "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01985",
   16057           "text": " Conditional rendering <strong class=\"purple\">must</strong> be <a href=\"#active-conditional-rendering\">active</a>"
   16058         },
   16059         {
   16060           "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01986",
   16061           "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> outside of a render pass instance, it must not be ended inside a render pass instance"
   16062         },
   16063         {
   16064           "vuid": "VUID-vkCmdEndConditionalRenderingEXT-None-01987",
   16065           "text": " If conditional rendering was made <a href=\"#active-conditional-rendering\">active</a> within a subpass it must be ended in the same subpass"
   16066         },
   16067         {
   16068           "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-parameter",
   16069           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16070         },
   16071         {
   16072           "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-recording",
   16073           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16074         },
   16075         {
   16076           "vuid": "VUID-vkCmdEndConditionalRenderingEXT-commandBuffer-cmdpool",
   16077           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   16078         }
   16079       ]
   16080     },
   16081     "vkCmdDrawMeshTasksNV": {
   16082       "(VK_NV_mesh_shader)": [
   16083         {
   16084           "vuid": "VUID-vkCmdDrawMeshTasksNV-taskCount-02119",
   16085           "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
   16086         },
   16087         {
   16088           "vuid": "VUID-vkCmdDrawMeshTasksNV-renderPass-02120",
   16089           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   16090         },
   16091         {
   16092           "vuid": "VUID-vkCmdDrawMeshTasksNV-subpass-02121",
   16093           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   16094         },
   16095         {
   16096           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02122",
   16097           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   16098         },
   16099         {
   16100           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02123",
   16101           "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   16102         },
   16103         {
   16104           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02124",
   16105           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   16106         },
   16107         {
   16108           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02125",
   16109           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   16110         },
   16111         {
   16112           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02126",
   16113           "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   16114         },
   16115         {
   16116           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02127",
   16117           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   16118         },
   16119         {
   16120           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02128",
   16121           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   16122         },
   16123         {
   16124           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02129",
   16125           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   16126         },
   16127         {
   16128           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02130",
   16129           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   16130         },
   16131         {
   16132           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02131",
   16133           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
   16134         },
   16135         {
   16136           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02132",
   16137           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
   16138         },
   16139         {
   16140           "vuid": "VUID-vkCmdDrawMeshTasksNV-linearTilingFeatures-02133",
   16141           "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
   16142         },
   16143         {
   16144           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02134",
   16145           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   16146         },
   16147         {
   16148           "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-parameter",
   16149           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16150         },
   16151         {
   16152           "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-recording",
   16153           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16154         },
   16155         {
   16156           "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-cmdpool",
   16157           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   16158         },
   16159         {
   16160           "vuid": "VUID-vkCmdDrawMeshTasksNV-renderpass",
   16161           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   16162         }
   16163       ],
   16164       "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic)": [
   16165         {
   16166           "vuid": "VUID-vkCmdDrawMeshTasksNV-linearTilingFeatures-02135",
   16167           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
   16168         },
   16169         {
   16170           "vuid": "VUID-vkCmdDrawMeshTasksNV-None-02136",
   16171           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   16172         }
   16173       ],
   16174       "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [
   16175         {
   16176           "vuid": "VUID-vkCmdDrawMeshTasksNV-maxMultiviewInstanceIndex-02137",
   16177           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   16178         }
   16179       ],
   16180       "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
   16181         {
   16182           "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02138",
   16183           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   16184         },
   16185         {
   16186           "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02139",
   16187           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
   16188         },
   16189         {
   16190           "vuid": "VUID-vkCmdDrawMeshTasksNV-commandBuffer-02140",
   16191           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   16192         }
   16193       ],
   16194       "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
   16195         {
   16196           "vuid": "VUID-vkCmdDrawMeshTasksNV-sampleLocationsEnable-02141",
   16197           "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   16198         }
   16199       ],
   16200       "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
   16201         {
   16202           "vuid": "VUID-vkCmdDrawMeshTasksNV-flags-02142",
   16203           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   16204         }
   16205       ]
   16206     },
   16207     "vkCmdDrawMeshTasksIndirectNV": {
   16208       "(VK_NV_mesh_shader)": [
   16209         {
   16210           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02143",
   16211           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   16212         },
   16213         {
   16214           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-02144",
   16215           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   16216         },
   16217         {
   16218           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-offset-02145",
   16219           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   16220         },
   16221         {
   16222           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02146",
   16223           "text": " If <code>drawCount</code> is greater than <code>1</code>, <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>)"
   16224         },
   16225         {
   16226           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02147",
   16227           "text": " If the <a href=\"#features-multiDrawIndirect\">multi-draw indirect</a> feature is not enabled, <code>drawCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
   16228         },
   16229         {
   16230           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderPass-02148",
   16231           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   16232         },
   16233         {
   16234           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-subpass-02149",
   16235           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   16236         },
   16237         {
   16238           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02150",
   16239           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   16240         },
   16241         {
   16242           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02151",
   16243           "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   16244         },
   16245         {
   16246           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02152",
   16247           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   16248         },
   16249         {
   16250           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02153",
   16251           "text": " All vertex input bindings accessed via vertex input variables declared in the vertex shader entry point&#8217;s interface <strong class=\"purple\">must</strong> have valid buffers bound"
   16252         },
   16253         {
   16254           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02154",
   16255           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   16256         },
   16257         {
   16258           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02155",
   16259           "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   16260         },
   16261         {
   16262           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02156",
   16263           "text": " If <code>drawCount</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   16264         },
   16265         {
   16266           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02157",
   16267           "text": " If <code>drawCount</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<a href=\"#VkDrawMeshTasksIndirectCommandNV\">VkDrawMeshTasksIndirectCommandNV</a>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   16268         },
   16269         {
   16270           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-drawCount-02158",
   16271           "text": " <code>drawCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
   16272         },
   16273         {
   16274           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02159",
   16275           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   16276         },
   16277         {
   16278           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02160",
   16279           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   16280         },
   16281         {
   16282           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02161",
   16283           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   16284         },
   16285         {
   16286           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02162",
   16287           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   16288         },
   16289         {
   16290           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02163",
   16291           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
   16292         },
   16293         {
   16294           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02164",
   16295           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
   16296         },
   16297         {
   16298           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-linearTilingFeatures-02165",
   16299           "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
   16300         },
   16301         {
   16302           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02166",
   16303           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   16304         },
   16305         {
   16306           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-parameter",
   16307           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16308         },
   16309         {
   16310           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-buffer-parameter",
   16311           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   16312         },
   16313         {
   16314           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-recording",
   16315           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16316         },
   16317         {
   16318           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-cmdpool",
   16319           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   16320         },
   16321         {
   16322           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-renderpass",
   16323           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   16324         },
   16325         {
   16326           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commonparent",
   16327           "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   16328         }
   16329       ],
   16330       "(VK_NV_mesh_shader)+(VK_IMG_filter_cubic)": [
   16331         {
   16332           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-linearTilingFeatures-02167",
   16333           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports cubic filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
   16334         },
   16335         {
   16336           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-None-02168",
   16337           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   16338         }
   16339       ],
   16340       "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [
   16341         {
   16342           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-maxMultiviewInstanceIndex-02169",
   16343           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   16344         }
   16345       ],
   16346       "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
   16347         {
   16348           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02170",
   16349           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   16350         },
   16351         {
   16352           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02171",
   16353           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
   16354         },
   16355         {
   16356           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-commandBuffer-02172",
   16357           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   16358         }
   16359       ],
   16360       "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
   16361         {
   16362           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-sampleLocationsEnable-02173",
   16363           "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   16364         }
   16365       ],
   16366       "(VK_NV_mesh_shader)+(VK_NV_corner_sampled_image)": [
   16367         {
   16368           "vuid": "VUID-vkCmdDrawMeshTasksIndirectNV-flags-02174",
   16369           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   16370         }
   16371       ]
   16372     },
   16373     "VkDrawMeshTasksIndirectCommandNV": {
   16374       "(VK_NV_mesh_shader)": [
   16375         {
   16376           "vuid": "VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175",
   16377           "text": " <code>taskCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceMeshShaderPropertiesNV</code>::<code>maxDrawMeshTasksCount</code>"
   16378         }
   16379       ]
   16380     },
   16381     "vkCmdDrawMeshTasksIndirectCountNV": {
   16382       "(VK_NV_mesh_shader)": [
   16383         {
   16384           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02176",
   16385           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   16386         },
   16387         {
   16388           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-02177",
   16389           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   16390         },
   16391         {
   16392           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02178",
   16393           "text": " If <code>countBuffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   16394         },
   16395         {
   16396           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02179",
   16397           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   16398         },
   16399         {
   16400           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-offset-02180",
   16401           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   16402         },
   16403         {
   16404           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBufferOffset-02181",
   16405           "text": " <code>countBufferOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   16406         },
   16407         {
   16408           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-stride-02182",
   16409           "text": " <code>stride</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code> and <strong class=\"purple\">must</strong> be greater than or equal to <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>)"
   16410         },
   16411         {
   16412           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxDrawCount-02183",
   16413           "text": " If <code>maxDrawCount</code> is greater than or equal to <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>maxDrawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   16414         },
   16415         {
   16416           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderPass-02184",
   16417           "text": " The current render pass <strong class=\"purple\">must</strong> be <a href=\"#renderpass-compatibility\">compatible</a> with the <code>renderPass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   16418         },
   16419         {
   16420           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-subpass-02185",
   16421           "text": " The subpass index of the current render pass <strong class=\"purple\">must</strong> be equal to the <code>subpass</code> member of the <code>VkGraphicsPipelineCreateInfo</code> structure specified when creating the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>."
   16422         },
   16423         {
   16424           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02186",
   16425           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   16426         },
   16427         {
   16428           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02187",
   16429           "text": " For each push constant that is statically used by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   16430         },
   16431         {
   16432           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02188",
   16433           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the currently bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   16434         },
   16435         {
   16436           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02189",
   16437           "text": " A valid graphics pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code>"
   16438         },
   16439         {
   16440           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02190",
   16441           "text": " If the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> requires any dynamic state, that state <strong class=\"purple\">must</strong> have been set on the current command buffer"
   16442         },
   16443         {
   16444           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02191",
   16445           "text": " If the count stored in <code>countBuffer</code> is equal to <code>1</code>, <span class=\"eq\">(<code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   16446         },
   16447         {
   16448           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02192",
   16449           "text": " If the count stored in <code>countBuffer</code> is greater than <code>1</code>, <span class=\"eq\">(<code>stride</code> {times} (<code>drawCount</code> - 1) &#43; <code>offset</code> &#43; <code>sizeof</code>(<code>VkDrawMeshTasksIndirectCommandNV</code>))</span> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   16450         },
   16451         {
   16452           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-02193",
   16453           "text": " The count stored in <code>countBuffer</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxDrawIndirectCount</code>"
   16454         },
   16455         {
   16456           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02194",
   16457           "text": " Every input attachment used by the current subpass <strong class=\"purple\">must</strong> be bound to the pipeline via a descriptor set"
   16458         },
   16459         {
   16460           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02195",
   16461           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   16462         },
   16463         {
   16464           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02196",
   16465           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   16466         },
   16467         {
   16468           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02197",
   16469           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   16470         },
   16471         {
   16472           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02198",
   16473           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
   16474         },
   16475         {
   16476           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02199",
   16477           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the currently bound descriptor set"
   16478         },
   16479         {
   16480           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-linearTilingFeatures-02200",
   16481           "text": " Any <code>VkImageView</code> being sampled with <code>VK_FILTER_LINEAR</code> as a result of this command <strong class=\"purple\">must</strong> be of a format which supports linear filtering, as specified by the <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code> flag in <code>VkFormatProperties</code>::<code>linearTilingFeatures</code> (for a linear image) or <code>VkFormatProperties</code>::<code>optimalTilingFeatures</code>(for an optimally tiled image) returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
   16482         },
   16483         {
   16484           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-None-02201",
   16485           "text": " Image subresources used as attachments in the current render pass <strong class=\"purple\">must</strong> not be accessed in any way other than as an attachment by this command."
   16486         },
   16487         {
   16488           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-parameter",
   16489           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16490         },
   16491         {
   16492           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-buffer-parameter",
   16493           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   16494         },
   16495         {
   16496           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-countBuffer-parameter",
   16497           "text": " <code>countBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   16498         },
   16499         {
   16500           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-recording",
   16501           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16502         },
   16503         {
   16504           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-cmdpool",
   16505           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   16506         },
   16507         {
   16508           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-renderpass",
   16509           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   16510         },
   16511         {
   16512           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commonparent",
   16513           "text": " Each of <code>buffer</code>, <code>commandBuffer</code>, and <code>countBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   16514         }
   16515       ],
   16516       "(VK_NV_mesh_shader)+(VK_KHR_multiview)": [
   16517         {
   16518           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-maxMultiviewInstanceIndex-02202",
   16519           "text": " If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceMultiviewProperties\">VkPhysicalDeviceMultiviewProperties</a>::<code>maxMultiviewInstanceIndex</code>."
   16520         }
   16521       ],
   16522       "(VK_NV_mesh_shader)+(VK_VERSION_1_1)": [
   16523         {
   16524           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02203",
   16525           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   16526         },
   16527         {
   16528           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02204",
   16529           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
   16530         },
   16531         {
   16532           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-commandBuffer-02205",
   16533           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the framebuffer-space pipeline stages in the <code>VkPipeline</code> object currently bound to <code>VK_PIPELINE_BIND_POINT_GRAPHICS</code> reads from or writes to any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   16534         }
   16535       ],
   16536       "(VK_NV_mesh_shader)+(VK_EXT_sample_locations)": [
   16537         {
   16538           "vuid": "VUID-vkCmdDrawMeshTasksIndirectCountNV-sampleLocationsEnable-02206",
   16539           "text": " If the currently bound graphics pipeline was created with <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>::<code>sampleLocationsEnable</code> set to <code>VK_TRUE</code> and the current subpass has a depth/stencil attachment, then that attachment <strong class=\"purple\">must</strong> have been created with the <code>VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT</code> bit set"
   16540         }
   16541       ]
   16542     },
   16543     "VkPipelineVertexInputStateCreateInfo": {
   16544       "core": [
   16545         {
   16546           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexBindingDescriptionCount-00613",
   16547           "text": " <code>vertexBindingDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
   16548         },
   16549         {
   16550           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-vertexAttributeDescriptionCount-00614",
   16551           "text": " <code>vertexAttributeDescriptionCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
   16552         },
   16553         {
   16554           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-binding-00615",
   16555           "text": " For every <code>binding</code> specified by each element of <code>pVertexAttributeDescriptions</code>, a <code>VkVertexInputBindingDescription</code> <strong class=\"purple\">must</strong> exist in <code>pVertexBindingDescriptions</code> with the same value of <code>binding</code>"
   16556         },
   16557         {
   16558           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-00616",
   16559           "text": " All elements of <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> describe distinct binding numbers"
   16560         },
   16561         {
   16562           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-00617",
   16563           "text": " All elements of <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> describe distinct attribute locations"
   16564         },
   16565         {
   16566           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-sType-sType",
   16567           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO</code>"
   16568         },
   16569         {
   16570           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pNext-pNext",
   16571           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineVertexInputDivisorStateCreateInfoEXT\">VkPipelineVertexInputDivisorStateCreateInfoEXT</a>"
   16572         },
   16573         {
   16574           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-flags-zerobitmask",
   16575           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   16576         },
   16577         {
   16578           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexBindingDescriptions-parameter",
   16579           "text": " If <code>vertexBindingDescriptionCount</code> is not <code>0</code>, <code>pVertexBindingDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDescriptionCount</code> valid <code>VkVertexInputBindingDescription</code> structures"
   16580         },
   16581         {
   16582           "vuid": "VUID-VkPipelineVertexInputStateCreateInfo-pVertexAttributeDescriptions-parameter",
   16583           "text": " If <code>vertexAttributeDescriptionCount</code> is not <code>0</code>, <code>pVertexAttributeDescriptions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexAttributeDescriptionCount</code> valid <code>VkVertexInputAttributeDescription</code> structures"
   16584         }
   16585       ]
   16586     },
   16587     "VkVertexInputBindingDescription": {
   16588       "core": [
   16589         {
   16590           "vuid": "VUID-VkVertexInputBindingDescription-binding-00618",
   16591           "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
   16592         },
   16593         {
   16594           "vuid": "VUID-VkVertexInputBindingDescription-stride-00619",
   16595           "text": " <code>stride</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindingStride</code>"
   16596         },
   16597         {
   16598           "vuid": "VUID-VkVertexInputBindingDescription-inputRate-parameter",
   16599           "text": " <code>inputRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkVertexInputRate\">VkVertexInputRate</a> value"
   16600         }
   16601       ]
   16602     },
   16603     "VkVertexInputAttributeDescription": {
   16604       "core": [
   16605         {
   16606           "vuid": "VUID-VkVertexInputAttributeDescription-location-00620",
   16607           "text": " <code>location</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributes</code>"
   16608         },
   16609         {
   16610           "vuid": "VUID-VkVertexInputAttributeDescription-binding-00621",
   16611           "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
   16612         },
   16613         {
   16614           "vuid": "VUID-VkVertexInputAttributeDescription-offset-00622",
   16615           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputAttributeOffset</code>"
   16616         },
   16617         {
   16618           "vuid": "VUID-VkVertexInputAttributeDescription-format-00623",
   16619           "text": " <code>format</code> <strong class=\"purple\">must</strong> be allowed as a vertex buffer format, as specified by the <code>VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT</code> flag in <code>VkFormatProperties</code>::<code>bufferFeatures</code> returned by <code>vkGetPhysicalDeviceFormatProperties</code>"
   16620         },
   16621         {
   16622           "vuid": "VUID-VkVertexInputAttributeDescription-format-parameter",
   16623           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   16624         }
   16625       ]
   16626     },
   16627     "vkCmdBindVertexBuffers": {
   16628       "core": [
   16629         {
   16630           "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00624",
   16631           "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
   16632         },
   16633         {
   16634           "vuid": "VUID-vkCmdBindVertexBuffers-firstBinding-00625",
   16635           "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
   16636         },
   16637         {
   16638           "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-00626",
   16639           "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>"
   16640         },
   16641         {
   16642           "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00627",
   16643           "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_VERTEX_BUFFER_BIT</code> flag"
   16644         },
   16645         {
   16646           "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-00628",
   16647           "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   16648         },
   16649         {
   16650           "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-parameter",
   16651           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16652         },
   16653         {
   16654           "vuid": "VUID-vkCmdBindVertexBuffers-pBuffers-parameter",
   16655           "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles"
   16656         },
   16657         {
   16658           "vuid": "VUID-vkCmdBindVertexBuffers-pOffsets-parameter",
   16659           "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
   16660         },
   16661         {
   16662           "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-recording",
   16663           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16664         },
   16665         {
   16666           "vuid": "VUID-vkCmdBindVertexBuffers-commandBuffer-cmdpool",
   16667           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   16668         },
   16669         {
   16670           "vuid": "VUID-vkCmdBindVertexBuffers-bindingCount-arraylength",
   16671           "text": " <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   16672         },
   16673         {
   16674           "vuid": "VUID-vkCmdBindVertexBuffers-commonparent",
   16675           "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   16676         }
   16677       ]
   16678     },
   16679     "VkPipelineVertexInputDivisorStateCreateInfoEXT": {
   16680       "(VK_EXT_vertex_attribute_divisor)": [
   16681         {
   16682           "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-sType-sType",
   16683           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT</code>"
   16684         },
   16685         {
   16686           "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-pVertexBindingDivisors-parameter",
   16687           "text": " <code>pVertexBindingDivisors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>vertexBindingDivisorCount</code> <code>VkVertexInputBindingDivisorDescriptionEXT</code> structures"
   16688         },
   16689         {
   16690           "vuid": "VUID-VkPipelineVertexInputDivisorStateCreateInfoEXT-vertexBindingDivisorCount-arraylength",
   16691           "text": " <code>vertexBindingDivisorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   16692         }
   16693       ]
   16694     },
   16695     "VkVertexInputBindingDivisorDescriptionEXT": {
   16696       "(VK_EXT_vertex_attribute_divisor)": [
   16697         {
   16698           "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-binding-01869",
   16699           "text": " <code>binding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxVertexInputBindings</code>"
   16700         },
   16701         {
   16702           "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateZeroDivisor-02228",
   16703           "text": " If the <code>vertexAttributeInstanceRateZeroDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   16704         },
   16705         {
   16706           "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-vertexAttributeInstanceRateDivisor-02229",
   16707           "text": " If the <code>vertexAttributeInstanceRateDivisor</code> feature is not enabled, <code>divisor</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   16708         },
   16709         {
   16710           "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-divisor-01870",
   16711           "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be a value between <code>0</code> and <code>VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT</code>::<code>maxVertexAttribDivisor</code>, inclusive."
   16712         },
   16713         {
   16714           "vuid": "VUID-VkVertexInputBindingDivisorDescriptionEXT-inputRate-01871",
   16715           "text": " <a href=\"#VkVertexInputBindingDescription\">VkVertexInputBindingDescription</a>::<code>inputRate</code> <strong class=\"purple\">must</strong> be of type <code>VK_VERTEX_INPUT_RATE_INSTANCE</code> for this <code>binding</code>."
   16716         }
   16717       ]
   16718     },
   16719     "VkPipelineTessellationStateCreateInfo": {
   16720       "core": [
   16721         {
   16722           "vuid": "VUID-VkPipelineTessellationStateCreateInfo-patchControlPoints-01214",
   16723           "text": " <code>patchControlPoints</code> <strong class=\"purple\">must</strong> be greater than zero and less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxTessellationPatchSize</code>"
   16724         },
   16725         {
   16726           "vuid": "VUID-VkPipelineTessellationStateCreateInfo-sType-sType",
   16727           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO</code>"
   16728         },
   16729         {
   16730           "vuid": "VUID-VkPipelineTessellationStateCreateInfo-pNext-pNext",
   16731           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineTessellationDomainOriginStateCreateInfo\">VkPipelineTessellationDomainOriginStateCreateInfo</a>"
   16732         },
   16733         {
   16734           "vuid": "VUID-VkPipelineTessellationStateCreateInfo-flags-zerobitmask",
   16735           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   16736         }
   16737       ]
   16738     },
   16739     "VkPipelineTessellationDomainOriginStateCreateInfo": {
   16740       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   16741         {
   16742           "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-sType-sType",
   16743           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO</code>"
   16744         },
   16745         {
   16746           "vuid": "VUID-VkPipelineTessellationDomainOriginStateCreateInfo-domainOrigin-parameter",
   16747           "text": " <code>domainOrigin</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkTessellationDomainOrigin\">VkTessellationDomainOrigin</a> value"
   16748         }
   16749       ]
   16750     },
   16751     "vkCmdBindTransformFeedbackBuffersEXT": {
   16752       "(VK_EXT_transform_feedback)": [
   16753         {
   16754           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-transformFeedback-02355",
   16755           "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
   16756         },
   16757         {
   16758           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02356",
   16759           "text": " <code>firstBinding</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
   16760         },
   16761         {
   16762           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-firstBinding-02357",
   16763           "text": " The sum of <code>firstBinding</code> and <code>bindingCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
   16764         },
   16765         {
   16766           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02358",
   16767           "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be less than the size of the corresponding element in <code>pBuffers</code>"
   16768         },
   16769         {
   16770           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02359",
   16771           "text": " All elements of <code>pOffsets</code> <strong class=\"purple\">must</strong> be a multiple of 4"
   16772         },
   16773         {
   16774           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02360",
   16775           "text": " All elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT</code> flag"
   16776         },
   16777         {
   16778           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSize-02361",
   16779           "text": " If the optional <code>pSize</code> array is specified, each element of <code>pSizes</code> <strong class=\"purple\">must</strong> either be <code>VK_WHOLE_SIZE</code>, or be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBufferSize</code>"
   16780         },
   16781         {
   16782           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-02362",
   16783           "text": " All elements of <code>pSizes</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding buffer in <code>pBuffers</code>"
   16784         },
   16785         {
   16786           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-02363",
   16787           "text": " All elements of <code>pOffsets</code> plus <code>pSizes</code>, where the <code>pSizes</code>, element is not <code>VK_WHOLE_SIZE</code>, <strong class=\"purple\">must</strong> be less than or equal to the size of the corresponding element in <code>pBuffers</code>"
   16788         },
   16789         {
   16790           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-02364",
   16791           "text": " Each element of <code>pBuffers</code> that is non-sparse <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   16792         },
   16793         {
   16794           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-None-02365",
   16795           "text": " Transform feedback <strong class=\"purple\">must</strong> not be active when the <code>vkCmdBindTransformFeedbackBuffersEXT</code> command is recorded"
   16796         },
   16797         {
   16798           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-parameter",
   16799           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16800         },
   16801         {
   16802           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pBuffers-parameter",
   16803           "text": " <code>pBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> valid <code>VkBuffer</code> handles"
   16804         },
   16805         {
   16806           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pOffsets-parameter",
   16807           "text": " <code>pOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
   16808         },
   16809         {
   16810           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-pSizes-parameter",
   16811           "text": " If <code>pSizes</code> is not <code>NULL</code>, <code>pSizes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindingCount</code> <code>VkDeviceSize</code> values"
   16812         },
   16813         {
   16814           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-recording",
   16815           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16816         },
   16817         {
   16818           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commandBuffer-cmdpool",
   16819           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   16820         },
   16821         {
   16822           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-bindingCount-arraylength",
   16823           "text": " If <code>pSizes</code> is not <code>NULL</code>, <code>bindingCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   16824         },
   16825         {
   16826           "vuid": "VUID-vkCmdBindTransformFeedbackBuffersEXT-commonparent",
   16827           "text": " Both of <code>commandBuffer</code>, and the elements of <code>pBuffers</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   16828         }
   16829       ]
   16830     },
   16831     "vkCmdBeginTransformFeedbackEXT": {
   16832       "(VK_EXT_transform_feedback)": [
   16833         {
   16834           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-transformFeedback-02366",
   16835           "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
   16836         },
   16837         {
   16838           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02367",
   16839           "text": " Transform feedback <strong class=\"purple\">must</strong> not be active"
   16840         },
   16841         {
   16842           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02368",
   16843           "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
   16844         },
   16845         {
   16846           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-firstCounterBuffer-02369",
   16847           "text": " The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
   16848         },
   16849         {
   16850           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-counterBufferCount-02607",
   16851           "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBuffers</code> is not <code>NULL</code>, <code>pCounterBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkBuffer</code> handles that are either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   16852         },
   16853         {
   16854           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-02370",
   16855           "text": " For each buffer handle in the array, if it is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> reference a buffer large enough to hold 4 bytes at the corresponding offset from the <code>pCounterBufferOffsets</code> array"
   16856         },
   16857         {
   16858           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffer-02371",
   16859           "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
   16860         },
   16861         {
   16862           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBuffers-02372",
   16863           "text": " For each buffer handle in the <code>pCounterBuffers</code> array that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code>"
   16864         },
   16865         {
   16866           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-parameter",
   16867           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16868         },
   16869         {
   16870           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-pCounterBufferOffsets-parameter",
   16871           "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBufferOffsets</code> is not <code>NULL</code>, <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkDeviceSize</code> values"
   16872         },
   16873         {
   16874           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-recording",
   16875           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16876         },
   16877         {
   16878           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commandBuffer-cmdpool",
   16879           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   16880         },
   16881         {
   16882           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-renderpass",
   16883           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   16884         },
   16885         {
   16886           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-commonparent",
   16887           "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   16888         }
   16889       ],
   16890       "(VK_EXT_transform_feedback)+(VK_VERSION_1_1,VK_KHR_multiview)": [
   16891         {
   16892           "vuid": "VUID-vkCmdBeginTransformFeedbackEXT-None-02373",
   16893           "text": " Transform feedback <strong class=\"purple\">must</strong> not be made active in a render pass instance with multiview enabled"
   16894         }
   16895       ]
   16896     },
   16897     "vkCmdEndTransformFeedbackEXT": {
   16898       "(VK_EXT_transform_feedback)": [
   16899         {
   16900           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-transformFeedback-02374",
   16901           "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>transformFeedback</code> <strong class=\"purple\">must</strong> be enabled"
   16902         },
   16903         {
   16904           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-None-02375",
   16905           "text": " Transform feedback <strong class=\"purple\">must</strong> be active"
   16906         },
   16907         {
   16908           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02376",
   16909           "text": " <code>firstCounterBuffer</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
   16910         },
   16911         {
   16912           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-firstCounterBuffer-02377",
   16913           "text": " The sum of <code>firstCounterBuffer</code> and <code>counterBufferCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>maxTransformFeedbackBuffers</code>"
   16914         },
   16915         {
   16916           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-counterBufferCount-02608",
   16917           "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBuffers</code> is not <code>NULL</code>, <code>pCounterBuffers</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkBuffer</code> handles that are either valid or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   16918         },
   16919         {
   16920           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-02378",
   16921           "text": " For each buffer handle in the array, if it is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> reference a buffer large enough to hold 4 bytes at the corresponding offset from the <code>pCounterBufferOffsets</code> array"
   16922         },
   16923         {
   16924           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffer-02379",
   16925           "text": " If <code>pCounterBuffer</code> is <code>NULL</code>, then <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> also be <code>NULL</code>"
   16926         },
   16927         {
   16928           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBuffers-02380",
   16929           "text": " For each buffer handle in the <code>pCounterBuffers</code> array that is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value containing <code>VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT</code>"
   16930         },
   16931         {
   16932           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-parameter",
   16933           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   16934         },
   16935         {
   16936           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-pCounterBufferOffsets-parameter",
   16937           "text": " If <code>counterBufferCount</code> is not <code>0</code>, and <code>pCounterBufferOffsets</code> is not <code>NULL</code>, <code>pCounterBufferOffsets</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>counterBufferCount</code> <code>VkDeviceSize</code> values"
   16938         },
   16939         {
   16940           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-recording",
   16941           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   16942         },
   16943         {
   16944           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commandBuffer-cmdpool",
   16945           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   16946         },
   16947         {
   16948           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-renderpass",
   16949           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   16950         },
   16951         {
   16952           "vuid": "VUID-vkCmdEndTransformFeedbackEXT-commonparent",
   16953           "text": " Both of <code>commandBuffer</code>, and the elements of <code>pCounterBuffers</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   16954         }
   16955       ]
   16956     },
   16957     "VkPipelineViewportSwizzleStateCreateInfoNV": {
   16958       "(VK_NV_viewport_swizzle)": [
   16959         {
   16960           "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-01215",
   16961           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> match the <code>viewportCount</code> set in <code>VkPipelineViewportStateCreateInfo</code>"
   16962         },
   16963         {
   16964           "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-sType-sType",
   16965           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV</code>"
   16966         },
   16967         {
   16968           "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-flags-zerobitmask",
   16969           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   16970         },
   16971         {
   16972           "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-pViewportSwizzles-parameter",
   16973           "text": " <code>pViewportSwizzles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkViewportSwizzleNV</code> structures"
   16974         },
   16975         {
   16976           "vuid": "VUID-VkPipelineViewportSwizzleStateCreateInfoNV-viewportCount-arraylength",
   16977           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   16978         }
   16979       ]
   16980     },
   16981     "VkViewportSwizzleNV": {
   16982       "(VK_NV_viewport_swizzle)": [
   16983         {
   16984           "vuid": "VUID-VkViewportSwizzleNV-x-parameter",
   16985           "text": " <code>x</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
   16986         },
   16987         {
   16988           "vuid": "VUID-VkViewportSwizzleNV-y-parameter",
   16989           "text": " <code>y</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
   16990         },
   16991         {
   16992           "vuid": "VUID-VkViewportSwizzleNV-z-parameter",
   16993           "text": " <code>z</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
   16994         },
   16995         {
   16996           "vuid": "VUID-VkViewportSwizzleNV-w-parameter",
   16997           "text": " <code>w</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkViewportCoordinateSwizzleNV\">VkViewportCoordinateSwizzleNV</a> value"
   16998         }
   16999       ]
   17000     },
   17001     "VkPipelineViewportWScalingStateCreateInfoNV": {
   17002       "(VK_NV_clip_space_w_scaling)": [
   17003         {
   17004           "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-sType-sType",
   17005           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV</code>"
   17006         },
   17007         {
   17008           "vuid": "VUID-VkPipelineViewportWScalingStateCreateInfoNV-viewportCount-arraylength",
   17009           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17010         }
   17011       ]
   17012     },
   17013     "vkCmdSetViewportWScalingNV": {
   17014       "(VK_NV_clip_space_w_scaling)": [
   17015         {
   17016           "vuid": "VUID-vkCmdSetViewportWScalingNV-None-01322",
   17017           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV</code> dynamic state enabled"
   17018         },
   17019         {
   17020           "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01323",
   17021           "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>"
   17022         },
   17023         {
   17024           "vuid": "VUID-vkCmdSetViewportWScalingNV-firstViewport-01324",
   17025           "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>maxViewports</code>, inclusive"
   17026         },
   17027         {
   17028           "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-parameter",
   17029           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17030         },
   17031         {
   17032           "vuid": "VUID-vkCmdSetViewportWScalingNV-pViewportWScalings-parameter",
   17033           "text": " <code>pViewportWScalings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkViewportWScalingNV</code> structures"
   17034         },
   17035         {
   17036           "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-recording",
   17037           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17038         },
   17039         {
   17040           "vuid": "VUID-vkCmdSetViewportWScalingNV-commandBuffer-cmdpool",
   17041           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17042         },
   17043         {
   17044           "vuid": "VUID-vkCmdSetViewportWScalingNV-viewportCount-arraylength",
   17045           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17046         }
   17047       ]
   17048     },
   17049     "VkPipelineViewportStateCreateInfo": {
   17050       "core": [
   17051         {
   17052           "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01216",
   17053           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   17054         },
   17055         {
   17056           "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01217",
   17057           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   17058         },
   17059         {
   17060           "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-01218",
   17061           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
   17062         },
   17063         {
   17064           "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01219",
   17065           "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
   17066         },
   17067         {
   17068           "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-01220",
   17069           "text": " <code>scissorCount</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be identical"
   17070         },
   17071         {
   17072           "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-sType",
   17073           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO</code>"
   17074         },
   17075         {
   17076           "vuid": "VUID-VkPipelineViewportStateCreateInfo-pNext-pNext",
   17077           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineViewportCoarseSampleOrderStateCreateInfoNV\">VkPipelineViewportCoarseSampleOrderStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportExclusiveScissorStateCreateInfoNV\">VkPipelineViewportExclusiveScissorStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportShadingRateImageStateCreateInfoNV\">VkPipelineViewportShadingRateImageStateCreateInfoNV</a>, <a href=\"#VkPipelineViewportSwizzleStateCreateInfoNV\">VkPipelineViewportSwizzleStateCreateInfoNV</a>, or <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a>"
   17078         },
   17079         {
   17080           "vuid": "VUID-VkPipelineViewportStateCreateInfo-sType-unique",
   17081           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   17082         },
   17083         {
   17084           "vuid": "VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask",
   17085           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17086         },
   17087         {
   17088           "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportCount-arraylength",
   17089           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17090         },
   17091         {
   17092           "vuid": "VUID-VkPipelineViewportStateCreateInfo-scissorCount-arraylength",
   17093           "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17094         }
   17095       ],
   17096       "(VK_NV_clip_space_w_scaling)": [
   17097         {
   17098           "vuid": "VUID-VkPipelineViewportStateCreateInfo-viewportWScalingEnable-01726",
   17099           "text": " If the <code>viewportWScalingEnable</code> member of a <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure chained to the <code>pNext</code> chain is <code>VK_TRUE</code>, the <code>viewportCount</code> member of the <a href=\"#VkPipelineViewportWScalingStateCreateInfoNV\">VkPipelineViewportWScalingStateCreateInfoNV</a> structure <strong class=\"purple\">must</strong> be equal to <code>viewportCount</code>"
   17100         }
   17101       ]
   17102     },
   17103     "vkCmdSetViewport": {
   17104       "core": [
   17105         {
   17106           "vuid": "VUID-vkCmdSetViewport-None-01221",
   17107           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT</code> dynamic state enabled"
   17108         },
   17109         {
   17110           "vuid": "VUID-vkCmdSetViewport-firstViewport-01222",
   17111           "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
   17112         },
   17113         {
   17114           "vuid": "VUID-vkCmdSetViewport-firstViewport-01223",
   17115           "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
   17116         },
   17117         {
   17118           "vuid": "VUID-vkCmdSetViewport-firstViewport-01224",
   17119           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17120         },
   17121         {
   17122           "vuid": "VUID-vkCmdSetViewport-viewportCount-01225",
   17123           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   17124         },
   17125         {
   17126           "vuid": "VUID-vkCmdSetViewport-commandBuffer-parameter",
   17127           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17128         },
   17129         {
   17130           "vuid": "VUID-vkCmdSetViewport-pViewports-parameter",
   17131           "text": " <code>pViewports</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkViewport</code> structures"
   17132         },
   17133         {
   17134           "vuid": "VUID-vkCmdSetViewport-commandBuffer-recording",
   17135           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17136         },
   17137         {
   17138           "vuid": "VUID-vkCmdSetViewport-commandBuffer-cmdpool",
   17139           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17140         },
   17141         {
   17142           "vuid": "VUID-vkCmdSetViewport-viewportCount-arraylength",
   17143           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17144         }
   17145       ]
   17146     },
   17147     "VkViewport": {
   17148       "core": [
   17149         {
   17150           "vuid": "VUID-VkViewport-width-01770",
   17151           "text": " <code>width</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
   17152         },
   17153         {
   17154           "vuid": "VUID-VkViewport-width-01771",
   17155           "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[0]"
   17156         },
   17157         {
   17158           "vuid": "VUID-VkViewport-height-01773",
   17159           "text": " The absolute value of <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewportDimensions</code>[1]"
   17160         },
   17161         {
   17162           "vuid": "VUID-VkViewport-x-01774",
   17163           "text": " <code>x</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
   17164         },
   17165         {
   17166           "vuid": "VUID-VkViewport-x-01232",
   17167           "text": " <span class=\"eq\">(<code>x</code> &#43; <code>width</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
   17168         },
   17169         {
   17170           "vuid": "VUID-VkViewport-y-01775",
   17171           "text": " <code>y</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
   17172         },
   17173         {
   17174           "vuid": "VUID-VkViewport-y-01233",
   17175           "text": " <span class=\"eq\">(<code>y</code> &#43; <code>height</code>)</span> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
   17176         }
   17177       ],
   17178       "!(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
   17179         {
   17180           "vuid": "VUID-VkViewport-height-01772",
   17181           "text": " <code>height</code> <strong class=\"purple\">must</strong> be greater than <code>0.0</code>"
   17182         }
   17183       ],
   17184       "(VK_VERSION_1_1,VK_KHR_maintenance1,VK_AMD_negative_viewport_height)": [
   17185         {
   17186           "vuid": "VUID-VkViewport-y-01776",
   17187           "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>viewportBoundsRange</code>[1]"
   17188         },
   17189         {
   17190           "vuid": "VUID-VkViewport-y-01777",
   17191           "text": " <span class=\"eq\">(<code>y</code> &#43; <code>height</code>)</span> <strong class=\"purple\">must</strong> be greater than or equal to <code>viewportBoundsRange</code>[0]"
   17192         }
   17193       ],
   17194       "(VK_EXT_depth_range_unrestricted)": [
   17195         {
   17196           "vuid": "VUID-VkViewport-minDepth-01234",
   17197           "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   17198         },
   17199         {
   17200           "vuid": "VUID-VkViewport-maxDepth-01235",
   17201           "text": " Unless <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   17202         }
   17203       ],
   17204       "!(VK_EXT_depth_range_unrestricted)": [
   17205         {
   17206           "vuid": "VUID-VkViewport-minDepth-02540",
   17207           "text": " <code>minDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   17208         },
   17209         {
   17210           "vuid": "VUID-VkViewport-maxDepth-02541",
   17211           "text": " <code>maxDepth</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   17212         }
   17213       ]
   17214     },
   17215     "VkPipelineRasterizationStateCreateInfo": {
   17216       "core": [
   17217         {
   17218           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-depthClampEnable-00782",
   17219           "text": " If the <a href=\"#features-depthClamp\">depth clamping</a> feature is not enabled, <code>depthClampEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   17220         },
   17221         {
   17222           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-sType",
   17223           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO</code>"
   17224         },
   17225         {
   17226           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-pNext-pNext",
   17227           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineRasterizationConservativeStateCreateInfoEXT\">VkPipelineRasterizationConservativeStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationDepthClipStateCreateInfoEXT\">VkPipelineRasterizationDepthClipStateCreateInfoEXT</a>, <a href=\"#VkPipelineRasterizationStateRasterizationOrderAMD\">VkPipelineRasterizationStateRasterizationOrderAMD</a>, or <a href=\"#VkPipelineRasterizationStateStreamCreateInfoEXT\">VkPipelineRasterizationStateStreamCreateInfoEXT</a>"
   17228         },
   17229         {
   17230           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-sType-unique",
   17231           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   17232         },
   17233         {
   17234           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-flags-zerobitmask",
   17235           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17236         },
   17237         {
   17238           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-parameter",
   17239           "text": " <code>polygonMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPolygonMode\">VkPolygonMode</a> value"
   17240         },
   17241         {
   17242           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-cullMode-parameter",
   17243           "text": " <code>cullMode</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkCullModeFlagBits\">VkCullModeFlagBits</a> values"
   17244         },
   17245         {
   17246           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-frontFace-parameter",
   17247           "text": " <code>frontFace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFrontFace\">VkFrontFace</a> value"
   17248         }
   17249       ],
   17250       "!(VK_NV_fill_rectangle)": [
   17251         {
   17252           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01413",
   17253           "text": " If the <a href=\"#features-fillModeNonSolid\">non-solid fill modes</a> feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code>"
   17254         }
   17255       ],
   17256       "(VK_NV_fill_rectangle)": [
   17257         {
   17258           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01507",
   17259           "text": " If the <a href=\"#features-fillModeNonSolid\">non-solid fill modes</a> feature is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> be <code>VK_POLYGON_MODE_FILL</code> or <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>"
   17260         },
   17261         {
   17262           "vuid": "VUID-VkPipelineRasterizationStateCreateInfo-polygonMode-01414",
   17263           "text": " If the <code><a href=\"#VK_NV_fill_rectangle\">VK_NV_fill_rectangle</a></code> extension is not enabled, <code>polygonMode</code> <strong class=\"purple\">must</strong> not be <code>VK_POLYGON_MODE_FILL_RECTANGLE_NV</code>"
   17264         }
   17265       ]
   17266     },
   17267     "VkPipelineRasterizationDepthClipStateCreateInfoEXT": {
   17268       "(VK_EXT_depth_clip_enable)": [
   17269         {
   17270           "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-sType-sType",
   17271           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT</code>"
   17272         },
   17273         {
   17274           "vuid": "VUID-VkPipelineRasterizationDepthClipStateCreateInfoEXT-flags-zerobitmask",
   17275           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17276         }
   17277       ]
   17278     },
   17279     "VkPipelineMultisampleStateCreateInfo": {
   17280       "core": [
   17281         {
   17282           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sampleShadingEnable-00784",
   17283           "text": " If the <a href=\"#features-sampleRateShading\">sample rate shading</a> feature is not enabled, <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   17284         },
   17285         {
   17286           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-alphaToOneEnable-00785",
   17287           "text": " If the <a href=\"#features-alphaToOne\">alpha to one</a> feature is not enabled, <code>alphaToOneEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   17288         },
   17289         {
   17290           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-minSampleShading-00786",
   17291           "text": " <code>minSampleShading</code> <strong class=\"purple\">must</strong> be in the range <span class=\"eq\">[0,1]</span>"
   17292         },
   17293         {
   17294           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-sType",
   17295           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO</code>"
   17296         },
   17297         {
   17298           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pNext-pNext",
   17299           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineCoverageModulationStateCreateInfoNV\">VkPipelineCoverageModulationStateCreateInfoNV</a>, <a href=\"#VkPipelineCoverageToColorStateCreateInfoNV\">VkPipelineCoverageToColorStateCreateInfoNV</a>, or <a href=\"#VkPipelineSampleLocationsStateCreateInfoEXT\">VkPipelineSampleLocationsStateCreateInfoEXT</a>"
   17300         },
   17301         {
   17302           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-sType-unique",
   17303           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   17304         },
   17305         {
   17306           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-flags-zerobitmask",
   17307           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17308         },
   17309         {
   17310           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-parameter",
   17311           "text": " <code>rasterizationSamples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
   17312         },
   17313         {
   17314           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-pSampleMask-parameter",
   17315           "text": " If <code>pSampleMask</code> is not <code>NULL</code>, <code>pSampleMask</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of \\(\\lceil{\\mathit{rasterizationSamples} \\over 32}\\rceil\\) <code>VkSampleMask</code> values"
   17316         }
   17317       ],
   17318       "(VK_NV_framebuffer_mixed_samples)": [
   17319         {
   17320           "vuid": "VUID-VkPipelineMultisampleStateCreateInfo-rasterizationSamples-01415",
   17321           "text": " If the <code>VK_NV_framebuffer_mixed_samples</code> extension is enabled, and if the subpass has any color attachments and <code>rasterizationSamples</code> is greater than the number of color samples, then <code>sampleShadingEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   17322         }
   17323       ]
   17324     },
   17325     "VkPipelineRasterizationStateStreamCreateInfoEXT": {
   17326       "(VK_EXT_transform_feedback)": [
   17327         {
   17328           "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-geometryStreams-02324",
   17329           "text": " <code>VkPhysicalDeviceTransformFeedbackFeaturesEXT</code>::<code>geometryStreams</code> <strong class=\"purple\">must</strong> be enabled"
   17330         },
   17331         {
   17332           "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02325",
   17333           "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be less than <a href=\"#VkPhysicalDeviceTransformFeedbackPropertiesEXT\">VkPhysicalDeviceTransformFeedbackPropertiesEXT</a>::<code>maxTransformFeedbackStreams</code>"
   17334         },
   17335         {
   17336           "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-rasterizationStream-02326",
   17337           "text": " <code>rasterizationStream</code> <strong class=\"purple\">must</strong> be zero if <code>VkPhysicalDeviceTransformFeedbackPropertiesEXT</code>::<code>transformFeedbackRasterizationStreamSelect</code> is <code>VK_FALSE</code>"
   17338         },
   17339         {
   17340           "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-sType-sType",
   17341           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT</code>"
   17342         },
   17343         {
   17344           "vuid": "VUID-VkPipelineRasterizationStateStreamCreateInfoEXT-flags-zerobitmask",
   17345           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17346         }
   17347       ]
   17348     },
   17349     "VkPipelineRasterizationStateRasterizationOrderAMD": {
   17350       "(VK_AMD_rasterization_order)": [
   17351         {
   17352           "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-sType-sType",
   17353           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD</code>"
   17354         },
   17355         {
   17356           "vuid": "VUID-VkPipelineRasterizationStateRasterizationOrderAMD-rasterizationOrder-parameter",
   17357           "text": " <code>rasterizationOrder</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkRasterizationOrderAMD\">VkRasterizationOrderAMD</a> value"
   17358         }
   17359       ]
   17360     },
   17361     "VkPipelineSampleLocationsStateCreateInfoEXT": {
   17362       "(VK_EXT_sample_locations)": [
   17363         {
   17364           "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sType-sType",
   17365           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT</code>"
   17366         },
   17367         {
   17368           "vuid": "VUID-VkPipelineSampleLocationsStateCreateInfoEXT-sampleLocationsInfo-parameter",
   17369           "text": " <code>sampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid <code>VkSampleLocationsInfoEXT</code> structure"
   17370         }
   17371       ]
   17372     },
   17373     "VkSampleLocationsInfoEXT": {
   17374       "(VK_EXT_sample_locations)": [
   17375         {
   17376           "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-01526",
   17377           "text": " <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a bit value that is set in <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>sampleLocationSampleCounts</code>"
   17378         },
   17379         {
   17380           "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsCount-01527",
   17381           "text": " <code>sampleLocationsCount</code> <strong class=\"purple\">must</strong> equal <span class=\"eq\"><code>sampleLocationsPerPixel</code> {times} <code>sampleLocationGridSize.width</code> {times} <code>sampleLocationGridSize.height</code></span>"
   17382         },
   17383         {
   17384           "vuid": "VUID-VkSampleLocationsInfoEXT-sType-sType",
   17385           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT</code>"
   17386         },
   17387         {
   17388           "vuid": "VUID-VkSampleLocationsInfoEXT-sampleLocationsPerPixel-parameter",
   17389           "text": " If <code>sampleLocationsPerPixel</code> is not <code>0</code>, <code>sampleLocationsPerPixel</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
   17390         },
   17391         {
   17392           "vuid": "VUID-VkSampleLocationsInfoEXT-pSampleLocations-parameter",
   17393           "text": " If <code>sampleLocationsCount</code> is not <code>0</code>, <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationsCount</code> <code>VkSampleLocationEXT</code> structures"
   17394         }
   17395       ]
   17396     },
   17397     "vkCmdSetSampleLocationsEXT": {
   17398       "(VK_EXT_sample_locations)": [
   17399         {
   17400           "vuid": "VUID-vkCmdSetSampleLocationsEXT-None-01528",
   17401           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT</code> dynamic state enabled"
   17402         },
   17403         {
   17404           "vuid": "VUID-vkCmdSetSampleLocationsEXT-sampleLocationsPerPixel-01529",
   17405           "text": " The <code>sampleLocationsPerPixel</code> member of <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> equal the <code>rasterizationSamples</code> member of the <a href=\"#VkPipelineMultisampleStateCreateInfo\">VkPipelineMultisampleStateCreateInfo</a> structure the bound graphics pipeline has been created with"
   17406         },
   17407         {
   17408           "vuid": "VUID-vkCmdSetSampleLocationsEXT-variableSampleLocations-01530",
   17409           "text": " If <a href=\"#VkPhysicalDeviceSampleLocationsPropertiesEXT\">VkPhysicalDeviceSampleLocationsPropertiesEXT</a>::<code>variableSampleLocations</code> is <code>VK_FALSE</code> then the current render pass <strong class=\"purple\">must</strong> have been begun by specifying a <a href=\"#VkRenderPassSampleLocationsBeginInfoEXT\">VkRenderPassSampleLocationsBeginInfoEXT</a> structure whose <code>pPostSubpassSampleLocations</code> member contains an element with a <code>subpassIndex</code> matching the current subpass index and the <code>sampleLocationsInfo</code> member of that element <strong class=\"purple\">must</strong> match the sample locations state pointed to by <code>pSampleLocationsInfo</code>"
   17410         },
   17411         {
   17412           "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-parameter",
   17413           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17414         },
   17415         {
   17416           "vuid": "VUID-vkCmdSetSampleLocationsEXT-pSampleLocationsInfo-parameter",
   17417           "text": " <code>pSampleLocationsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSampleLocationsInfoEXT</code> structure"
   17418         },
   17419         {
   17420           "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-recording",
   17421           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17422         },
   17423         {
   17424           "vuid": "VUID-vkCmdSetSampleLocationsEXT-commandBuffer-cmdpool",
   17425           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17426         }
   17427       ]
   17428     },
   17429     "VkPipelineViewportShadingRateImageStateCreateInfoNV": {
   17430       "(VK_NV_shading_rate_image)": [
   17431         {
   17432           "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054",
   17433           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
   17434         },
   17435         {
   17436           "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055",
   17437           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
   17438         },
   17439         {
   17440           "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056",
   17441           "text": " If <code>shadingRateImageEnable</code> is <code>VK_TRUE</code>, <code>viewportCount</code> <strong class=\"purple\">must</strong> be equal to the <code>viewportCount</code> member of <code>VkPipelineViewportStateCreateInfo</code>"
   17442         },
   17443         {
   17444           "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pDynamicStates-02057",
   17445           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code>, <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> <code>VkShadingRatePaletteNV</code> structures"
   17446         },
   17447         {
   17448           "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType",
   17449           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV</code>"
   17450         },
   17451         {
   17452           "vuid": "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pShadingRatePalettes-parameter",
   17453           "text": " If <code>viewportCount</code> is not <code>0</code>, and <code>pShadingRatePalettes</code> is not <code>NULL</code>, <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkShadingRatePaletteNV</code> structures"
   17454         }
   17455       ]
   17456     },
   17457     "vkCmdBindShadingRateImageNV": {
   17458       "(VK_NV_shading_rate_image)": [
   17459         {
   17460           "vuid": "VUID-vkCmdBindShadingRateImageNV-None-02058",
   17461           "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled."
   17462         },
   17463         {
   17464           "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02059",
   17465           "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageView\">VkImageView</a> handle of type <code>VK_IMAGE_VIEW_TYPE_2D</code> or <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code>."
   17466         },
   17467         {
   17468           "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02060",
   17469           "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have a format of <code>VK_FORMAT_R8_UINT</code>."
   17470         },
   17471         {
   17472           "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02061",
   17473           "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, it <strong class=\"purple\">must</strong> have been created with a <code>usage</code> value including <code>VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV</code>"
   17474         },
   17475         {
   17476           "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-02062",
   17477           "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> match the actual <a href=\"#VkImageLayout\">VkImageLayout</a> of each subresource accessible from <code>imageView</code> at the time the subresource is accessed."
   17478         },
   17479         {
   17480           "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-02063",
   17481           "text": " If <code>imageView</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>imageLayout</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV</code> or <code>VK_IMAGE_LAYOUT_GENERAL</code>."
   17482         },
   17483         {
   17484           "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-parameter",
   17485           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17486         },
   17487         {
   17488           "vuid": "VUID-vkCmdBindShadingRateImageNV-imageView-parameter",
   17489           "text": " <code>imageView</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageView</code> handle"
   17490         },
   17491         {
   17492           "vuid": "VUID-vkCmdBindShadingRateImageNV-imageLayout-parameter",
   17493           "text": " <code>imageLayout</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageLayout\">VkImageLayout</a> value"
   17494         },
   17495         {
   17496           "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-recording",
   17497           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17498         },
   17499         {
   17500           "vuid": "VUID-vkCmdBindShadingRateImageNV-commandBuffer-cmdpool",
   17501           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17502         },
   17503         {
   17504           "vuid": "VUID-vkCmdBindShadingRateImageNV-commonparent",
   17505           "text": " Both of <code>commandBuffer</code>, and <code>imageView</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   17506         }
   17507       ]
   17508     },
   17509     "vkCmdSetViewportShadingRatePaletteNV": {
   17510       "(VK_NV_shading_rate_image)": [
   17511         {
   17512           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02064",
   17513           "text": " The <a href=\"#features-shadingRateImage\">shading rate image</a> feature <strong class=\"purple\">must</strong> be enabled."
   17514         },
   17515         {
   17516           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-None-02065",
   17517           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV</code> dynamic state enabled"
   17518         },
   17519         {
   17520           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02066",
   17521           "text": " <code>firstViewport</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
   17522         },
   17523         {
   17524           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02067",
   17525           "text": " The sum of <code>firstViewport</code> and <code>viewportCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
   17526         },
   17527         {
   17528           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-firstViewport-02068",
   17529           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstViewport</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17530         },
   17531         {
   17532           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-02069",
   17533           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>viewportCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   17534         },
   17535         {
   17536           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-parameter",
   17537           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17538         },
   17539         {
   17540           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-pShadingRatePalettes-parameter",
   17541           "text": " <code>pShadingRatePalettes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>viewportCount</code> valid <code>VkShadingRatePaletteNV</code> structures"
   17542         },
   17543         {
   17544           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-recording",
   17545           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17546         },
   17547         {
   17548           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-commandBuffer-cmdpool",
   17549           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17550         },
   17551         {
   17552           "vuid": "VUID-vkCmdSetViewportShadingRatePaletteNV-viewportCount-arraylength",
   17553           "text": " <code>viewportCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17554         }
   17555       ]
   17556     },
   17557     "VkShadingRatePaletteNV": {
   17558       "(VK_NV_shading_rate_image)": [
   17559         {
   17560           "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-02071",
   17561           "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRatePaletteSize</code>, inclusive"
   17562         },
   17563         {
   17564           "vuid": "VUID-VkShadingRatePaletteNV-pShadingRatePaletteEntries-parameter",
   17565           "text": " <code>pShadingRatePaletteEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>shadingRatePaletteEntryCount</code> valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> values"
   17566         },
   17567         {
   17568           "vuid": "VUID-VkShadingRatePaletteNV-shadingRatePaletteEntryCount-arraylength",
   17569           "text": " <code>shadingRatePaletteEntryCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17570         }
   17571       ]
   17572     },
   17573     "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV": {
   17574       "(VK_NV_shading_rate_image)": [
   17575         {
   17576           "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-02072",
   17577           "text": " If <code>sampleOrderType</code> is not <code>VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV</code>, <code>customSamplerOrderCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17578         },
   17579         {
   17580           "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-02234",
   17581           "text": " The array <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> not contain two structures with matching values for both the <code>shadingRate</code> and <code>sampleCount</code> members."
   17582         },
   17583         {
   17584           "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sType-sType",
   17585           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV</code>"
   17586         },
   17587         {
   17588           "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-sampleOrderType-parameter",
   17589           "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
   17590         },
   17591         {
   17592           "vuid": "VUID-VkPipelineViewportCoarseSampleOrderStateCreateInfoNV-pCustomSampleOrders-parameter",
   17593           "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <code>VkCoarseSampleOrderCustomNV</code> structures"
   17594         }
   17595       ]
   17596     },
   17597     "VkCoarseSampleOrderCustomNV": {
   17598       "(VK_NV_shading_rate_image)": [
   17599         {
   17600           "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-02073",
   17601           "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a shading rate that generates fragments with more than one pixel."
   17602         },
   17603         {
   17604           "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleCount-02074",
   17605           "text": " <code>sampleCount</code> <strong class=\"purple\">must</strong> correspond to a sample count enumerated in <a href=\"#VkSampleCountFlags\">VkSampleCountFlags</a> whose corresponding bit is set in <a href=\"#VkPhysicalDeviceLimits\">VkPhysicalDeviceLimits</a>::<code>framebufferNoAttachmentsSampleCounts</code>."
   17606         },
   17607         {
   17608           "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02075",
   17609           "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be equal to the product of <code>sampleCount</code>, the fragment width for <code>shadingRate</code>, and the fragment height for <code>shadingRate</code>."
   17610         },
   17611         {
   17612           "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-02076",
   17613           "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value of <code>VkPhysicalDeviceShadingRateImagePropertiesNV</code>::<code>shadingRateMaxCoarseSamples</code>."
   17614         },
   17615         {
   17616           "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-02077",
   17617           "text": " The array <code>pSampleLocations</code> <strong class=\"purple\">must</strong> contain exactly one entry for every combination of valid values for <code>pixelX</code>, <code>pixelY</code>, and <code>sample</code> in the structure <a href=\"#VkCoarseSampleOrderCustomNV\">VkCoarseSampleOrderCustomNV</a>."
   17618         },
   17619         {
   17620           "vuid": "VUID-VkCoarseSampleOrderCustomNV-shadingRate-parameter",
   17621           "text": " <code>shadingRate</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkShadingRatePaletteEntryNV\">VkShadingRatePaletteEntryNV</a> value"
   17622         },
   17623         {
   17624           "vuid": "VUID-VkCoarseSampleOrderCustomNV-pSampleLocations-parameter",
   17625           "text": " <code>pSampleLocations</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>sampleLocationCount</code> <code>VkCoarseSampleLocationNV</code> structures"
   17626         },
   17627         {
   17628           "vuid": "VUID-VkCoarseSampleOrderCustomNV-sampleLocationCount-arraylength",
   17629           "text": " <code>sampleLocationCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17630         }
   17631       ]
   17632     },
   17633     "VkCoarseSampleLocationNV": {
   17634       "(VK_NV_shading_rate_image)": [
   17635         {
   17636           "vuid": "VUID-VkCoarseSampleLocationNV-pixelX-02078",
   17637           "text": " <code>pixelX</code> <strong class=\"purple\">must</strong> be less than the width (in pixels) of the fragment."
   17638         },
   17639         {
   17640           "vuid": "VUID-VkCoarseSampleLocationNV-pixelY-02079",
   17641           "text": " <code>pixelY</code> <strong class=\"purple\">must</strong> be less than the height (in pixels) of the fragment."
   17642         },
   17643         {
   17644           "vuid": "VUID-VkCoarseSampleLocationNV-sample-02080",
   17645           "text": " <code>sample</code> <strong class=\"purple\">must</strong> be less than the number of coverage samples in each pixel belonging to the fragment."
   17646         }
   17647       ]
   17648     },
   17649     "vkCmdSetCoarseSampleOrderNV": {
   17650       "(VK_NV_shading_rate_image)": [
   17651         {
   17652           "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-02081",
   17653           "text": " If <code>sampleOrderType</code> is not <code>VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV</code>, <code>customSamplerOrderCount</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17654         },
   17655         {
   17656           "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-02235",
   17657           "text": " The array <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> not contain two structures with matching values for both the <code>shadingRate</code> and <code>sampleCount</code> members."
   17658         },
   17659         {
   17660           "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-parameter",
   17661           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17662         },
   17663         {
   17664           "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-sampleOrderType-parameter",
   17665           "text": " <code>sampleOrderType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoarseSampleOrderTypeNV\">VkCoarseSampleOrderTypeNV</a> value"
   17666         },
   17667         {
   17668           "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-pCustomSampleOrders-parameter",
   17669           "text": " If <code>customSampleOrderCount</code> is not <code>0</code>, <code>pCustomSampleOrders</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>customSampleOrderCount</code> valid <code>VkCoarseSampleOrderCustomNV</code> structures"
   17670         },
   17671         {
   17672           "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-recording",
   17673           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17674         },
   17675         {
   17676           "vuid": "VUID-vkCmdSetCoarseSampleOrderNV-commandBuffer-cmdpool",
   17677           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17678         }
   17679       ]
   17680     },
   17681     "vkCmdSetLineWidth": {
   17682       "core": [
   17683         {
   17684           "vuid": "VUID-vkCmdSetLineWidth-None-00787",
   17685           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_LINE_WIDTH</code> dynamic state enabled"
   17686         },
   17687         {
   17688           "vuid": "VUID-vkCmdSetLineWidth-lineWidth-00788",
   17689           "text": " If the <a href=\"#features-wideLines\">wide lines</a> feature is not enabled, <code>lineWidth</code> <strong class=\"purple\">must</strong> be <code>1.0</code>"
   17690         },
   17691         {
   17692           "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-parameter",
   17693           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17694         },
   17695         {
   17696           "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-recording",
   17697           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17698         },
   17699         {
   17700           "vuid": "VUID-vkCmdSetLineWidth-commandBuffer-cmdpool",
   17701           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17702         }
   17703       ]
   17704     },
   17705     "vkCmdSetDepthBias": {
   17706       "core": [
   17707         {
   17708           "vuid": "VUID-vkCmdSetDepthBias-None-00789",
   17709           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BIAS</code> dynamic state enabled"
   17710         },
   17711         {
   17712           "vuid": "VUID-vkCmdSetDepthBias-depthBiasClamp-00790",
   17713           "text": " If the <a href=\"#features-depthBiasClamp\">depth bias clamping</a> feature is not enabled, <code>depthBiasClamp</code> <strong class=\"purple\">must</strong> be <code>0.0</code>"
   17714         },
   17715         {
   17716           "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-parameter",
   17717           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17718         },
   17719         {
   17720           "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-recording",
   17721           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17722         },
   17723         {
   17724           "vuid": "VUID-vkCmdSetDepthBias-commandBuffer-cmdpool",
   17725           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17726         }
   17727       ]
   17728     },
   17729     "VkPipelineRasterizationConservativeStateCreateInfoEXT": {
   17730       "(VK_EXT_conservative_rasterization)": [
   17731         {
   17732           "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-extraPrimitiveOverestimationSize-01769",
   17733           "text": " <code>extraPrimitiveOverestimationSize</code> <strong class=\"purple\">must</strong> be in the range of <code>0.0</code> to <code>VkPhysicalDeviceConservativeRasterizationPropertiesEXT</code>::<code>maxExtraPrimitiveOverestimationSize</code> inclusive"
   17734         },
   17735         {
   17736           "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-sType-sType",
   17737           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT</code>"
   17738         },
   17739         {
   17740           "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-flags-zerobitmask",
   17741           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17742         },
   17743         {
   17744           "vuid": "VUID-VkPipelineRasterizationConservativeStateCreateInfoEXT-conservativeRasterizationMode-parameter",
   17745           "text": " <code>conservativeRasterizationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkConservativeRasterizationModeEXT\">VkConservativeRasterizationModeEXT</a> value"
   17746         }
   17747       ]
   17748     },
   17749     "VkPipelineDiscardRectangleStateCreateInfoEXT": {
   17750       "(VK_EXT_discard_rectangles)": [
   17751         {
   17752           "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleCount-00582",
   17753           "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>VkPhysicalDeviceDiscardRectanglePropertiesEXT</code>::<code>maxDiscardRectangles</code>, inclusive"
   17754         },
   17755         {
   17756           "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-sType-sType",
   17757           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT</code>"
   17758         },
   17759         {
   17760           "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-flags-zerobitmask",
   17761           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17762         },
   17763         {
   17764           "vuid": "VUID-VkPipelineDiscardRectangleStateCreateInfoEXT-discardRectangleMode-parameter",
   17765           "text": " <code>discardRectangleMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDiscardRectangleModeEXT\">VkDiscardRectangleModeEXT</a> value"
   17766         }
   17767       ]
   17768     },
   17769     "vkCmdSetDiscardRectangleEXT": {
   17770       "(VK_EXT_discard_rectangles)": [
   17771         {
   17772           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-None-00583",
   17773           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT</code> dynamic state enabled"
   17774         },
   17775         {
   17776           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-firstDiscardRectangle-00585",
   17777           "text": " The sum of <code>firstDiscardRectangle</code> and <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceDiscardRectanglePropertiesEXT\">VkPhysicalDeviceDiscardRectanglePropertiesEXT</a>::<code>maxDiscardRectangles</code>"
   17778         },
   17779         {
   17780           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-x-00587",
   17781           "text": " The <code>x</code> and <code>y</code> member of <code>offset</code> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
   17782         },
   17783         {
   17784           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00588",
   17785           "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> &#43; <code>extent.width</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
   17786         },
   17787         {
   17788           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-offset-00589",
   17789           "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> &#43; <code>extent.height</code>)</span> in each <a href=\"#VkRect2D\">VkRect2D</a> element of <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
   17790         },
   17791         {
   17792           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-parameter",
   17793           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17794         },
   17795         {
   17796           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-pDiscardRectangles-parameter",
   17797           "text": " <code>pDiscardRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>discardRectangleCount</code> <code>VkRect2D</code> structures"
   17798         },
   17799         {
   17800           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-recording",
   17801           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17802         },
   17803         {
   17804           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-commandBuffer-cmdpool",
   17805           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17806         },
   17807         {
   17808           "vuid": "VUID-vkCmdSetDiscardRectangleEXT-discardRectangleCount-arraylength",
   17809           "text": " <code>discardRectangleCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17810         }
   17811       ]
   17812     },
   17813     "vkCmdSetScissor": {
   17814       "core": [
   17815         {
   17816           "vuid": "VUID-vkCmdSetScissor-None-00590",
   17817           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_SCISSOR</code> dynamic state enabled"
   17818         },
   17819         {
   17820           "vuid": "VUID-vkCmdSetScissor-firstScissor-00591",
   17821           "text": " <code>firstScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
   17822         },
   17823         {
   17824           "vuid": "VUID-vkCmdSetScissor-firstScissor-00592",
   17825           "text": " The sum of <code>firstScissor</code> and <code>scissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
   17826         },
   17827         {
   17828           "vuid": "VUID-vkCmdSetScissor-firstScissor-00593",
   17829           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17830         },
   17831         {
   17832           "vuid": "VUID-vkCmdSetScissor-scissorCount-00594",
   17833           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>scissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   17834         },
   17835         {
   17836           "vuid": "VUID-vkCmdSetScissor-x-00595",
   17837           "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
   17838         },
   17839         {
   17840           "vuid": "VUID-vkCmdSetScissor-offset-00596",
   17841           "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> &#43; <code>extent.width</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
   17842         },
   17843         {
   17844           "vuid": "VUID-vkCmdSetScissor-offset-00597",
   17845           "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> &#43; <code>extent.height</code>)</span> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
   17846         },
   17847         {
   17848           "vuid": "VUID-vkCmdSetScissor-commandBuffer-parameter",
   17849           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17850         },
   17851         {
   17852           "vuid": "VUID-vkCmdSetScissor-pScissors-parameter",
   17853           "text": " <code>pScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>scissorCount</code> <code>VkRect2D</code> structures"
   17854         },
   17855         {
   17856           "vuid": "VUID-vkCmdSetScissor-commandBuffer-recording",
   17857           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17858         },
   17859         {
   17860           "vuid": "VUID-vkCmdSetScissor-commandBuffer-cmdpool",
   17861           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17862         },
   17863         {
   17864           "vuid": "VUID-vkCmdSetScissor-scissorCount-arraylength",
   17865           "text": " <code>scissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17866         }
   17867       ]
   17868     },
   17869     "VkPipelineViewportExclusiveScissorStateCreateInfoNV": {
   17870       "(VK_NV_scissor_exclusive)": [
   17871         {
   17872           "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027",
   17873           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or <code>1</code>"
   17874         },
   17875         {
   17876           "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028",
   17877           "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
   17878         },
   17879         {
   17880           "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029",
   17881           "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>0</code> or identical to the <code>viewportCount</code> member of <code>VkPipelineViewportStateCreateInfo</code>"
   17882         },
   17883         {
   17884           "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pDynamicStates-02030",
   17885           "text": " If no element of the <code>pDynamicStates</code> member of <code>pDynamicState</code> is <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> and <code>exclusiveScissorCount</code> is not <code>0</code>, <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
   17886         },
   17887         {
   17888           "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType",
   17889           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV</code>"
   17890         },
   17891         {
   17892           "vuid": "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pExclusiveScissors-parameter",
   17893           "text": " If <code>exclusiveScissorCount</code> is not <code>0</code>, and <code>pExclusiveScissors</code> is not <code>NULL</code>, <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
   17894         }
   17895       ]
   17896     },
   17897     "vkCmdSetExclusiveScissorNV": {
   17898       "(VK_NV_scissor_exclusive)": [
   17899         {
   17900           "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02031",
   17901           "text": " The <a href=\"#features-exclusiveScissor\">exclusive scissor</a> feature <strong class=\"purple\">must</strong> be enabled."
   17902         },
   17903         {
   17904           "vuid": "VUID-vkCmdSetExclusiveScissorNV-None-02032",
   17905           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV</code> dynamic state enabled"
   17906         },
   17907         {
   17908           "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02033",
   17909           "text": " <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>"
   17910         },
   17911         {
   17912           "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02034",
   17913           "text": " The sum of <code>firstExclusiveScissor</code> and <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be between <code>1</code> and <code>VkPhysicalDeviceLimits</code>::<code>maxViewports</code>, inclusive"
   17914         },
   17915         {
   17916           "vuid": "VUID-vkCmdSetExclusiveScissorNV-firstExclusiveScissor-02035",
   17917           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>firstExclusiveScissor</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17918         },
   17919         {
   17920           "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-02036",
   17921           "text": " If the <a href=\"#features-multiViewport\">multiple viewports</a> feature is not enabled, <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be <code>1</code>"
   17922         },
   17923         {
   17924           "vuid": "VUID-vkCmdSetExclusiveScissorNV-x-02037",
   17925           "text": " The <code>x</code> and <code>y</code> members of <code>offset</code> in each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be greater than or equal to <code>0</code>"
   17926         },
   17927         {
   17928           "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02038",
   17929           "text": " Evaluation of <span class=\"eq\">(<code>offset.x</code> &#43; <code>extent.width</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
   17930         },
   17931         {
   17932           "vuid": "VUID-vkCmdSetExclusiveScissorNV-offset-02039",
   17933           "text": " Evaluation of <span class=\"eq\">(<code>offset.y</code> &#43; <code>extent.height</code>)</span> for each member of <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> not cause a signed integer addition overflow"
   17934         },
   17935         {
   17936           "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-parameter",
   17937           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17938         },
   17939         {
   17940           "vuid": "VUID-vkCmdSetExclusiveScissorNV-pExclusiveScissors-parameter",
   17941           "text": " <code>pExclusiveScissors</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>exclusiveScissorCount</code> <code>VkRect2D</code> structures"
   17942         },
   17943         {
   17944           "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-recording",
   17945           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   17946         },
   17947         {
   17948           "vuid": "VUID-vkCmdSetExclusiveScissorNV-commandBuffer-cmdpool",
   17949           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   17950         },
   17951         {
   17952           "vuid": "VUID-vkCmdSetExclusiveScissorNV-exclusiveScissorCount-arraylength",
   17953           "text": " <code>exclusiveScissorCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   17954         }
   17955       ]
   17956     },
   17957     "VkPipelineDepthStencilStateCreateInfo": {
   17958       "core": [
   17959         {
   17960           "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthBoundsTestEnable-00598",
   17961           "text": " If the <a href=\"#features-depthBounds\">depth bounds testing</a> feature is not enabled, <code>depthBoundsTestEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   17962         },
   17963         {
   17964           "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-sType-sType",
   17965           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO</code>"
   17966         },
   17967         {
   17968           "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-pNext-pNext",
   17969           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   17970         },
   17971         {
   17972           "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-flags-zerobitmask",
   17973           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   17974         },
   17975         {
   17976           "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-depthCompareOp-parameter",
   17977           "text": " <code>depthCompareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
   17978         },
   17979         {
   17980           "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-front-parameter",
   17981           "text": " <code>front</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure"
   17982         },
   17983         {
   17984           "vuid": "VUID-VkPipelineDepthStencilStateCreateInfo-back-parameter",
   17985           "text": " <code>back</code> <strong class=\"purple\">must</strong> be a valid <code>VkStencilOpState</code> structure"
   17986         }
   17987       ]
   17988     },
   17989     "vkCmdSetDepthBounds": {
   17990       "core": [
   17991         {
   17992           "vuid": "VUID-vkCmdSetDepthBounds-None-00599",
   17993           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_DEPTH_BOUNDS</code> dynamic state enabled"
   17994         },
   17995         {
   17996           "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-parameter",
   17997           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   17998         },
   17999         {
   18000           "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-recording",
   18001           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   18002         },
   18003         {
   18004           "vuid": "VUID-vkCmdSetDepthBounds-commandBuffer-cmdpool",
   18005           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   18006         }
   18007       ],
   18008       "(VK_EXT_depth_range_unrestricted)": [
   18009         {
   18010           "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-00600",
   18011           "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   18012         },
   18013         {
   18014           "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-00601",
   18015           "text": " Unless the <code><a href=\"#VK_EXT_depth_range_unrestricted\">VK_EXT_depth_range_unrestricted</a></code> extension is enabled <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   18016         }
   18017       ],
   18018       "!(VK_EXT_depth_range_unrestricted)": [
   18019         {
   18020           "vuid": "VUID-vkCmdSetDepthBounds-minDepthBounds-02508",
   18021           "text": " <code>minDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   18022         },
   18023         {
   18024           "vuid": "VUID-vkCmdSetDepthBounds-maxDepthBounds-02509",
   18025           "text": " <code>maxDepthBounds</code> <strong class=\"purple\">must</strong> be between <code>0.0</code> and <code>1.0</code>, inclusive"
   18026         }
   18027       ]
   18028     },
   18029     "VkStencilOpState": {
   18030       "core": [
   18031         {
   18032           "vuid": "VUID-VkStencilOpState-failOp-parameter",
   18033           "text": " <code>failOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
   18034         },
   18035         {
   18036           "vuid": "VUID-VkStencilOpState-passOp-parameter",
   18037           "text": " <code>passOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
   18038         },
   18039         {
   18040           "vuid": "VUID-VkStencilOpState-depthFailOp-parameter",
   18041           "text": " <code>depthFailOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkStencilOp\">VkStencilOp</a> value"
   18042         },
   18043         {
   18044           "vuid": "VUID-VkStencilOpState-compareOp-parameter",
   18045           "text": " <code>compareOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompareOp\">VkCompareOp</a> value"
   18046         }
   18047       ]
   18048     },
   18049     "vkCmdSetStencilCompareMask": {
   18050       "core": [
   18051         {
   18052           "vuid": "VUID-vkCmdSetStencilCompareMask-None-00602",
   18053           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK</code> dynamic state enabled"
   18054         },
   18055         {
   18056           "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-parameter",
   18057           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   18058         },
   18059         {
   18060           "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-parameter",
   18061           "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
   18062         },
   18063         {
   18064           "vuid": "VUID-vkCmdSetStencilCompareMask-faceMask-requiredbitmask",
   18065           "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18066         },
   18067         {
   18068           "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-recording",
   18069           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   18070         },
   18071         {
   18072           "vuid": "VUID-vkCmdSetStencilCompareMask-commandBuffer-cmdpool",
   18073           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   18074         }
   18075       ]
   18076     },
   18077     "vkCmdSetStencilWriteMask": {
   18078       "core": [
   18079         {
   18080           "vuid": "VUID-vkCmdSetStencilWriteMask-None-00603",
   18081           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_WRITE_MASK</code> dynamic state enabled"
   18082         },
   18083         {
   18084           "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-parameter",
   18085           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   18086         },
   18087         {
   18088           "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-parameter",
   18089           "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
   18090         },
   18091         {
   18092           "vuid": "VUID-vkCmdSetStencilWriteMask-faceMask-requiredbitmask",
   18093           "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18094         },
   18095         {
   18096           "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-recording",
   18097           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   18098         },
   18099         {
   18100           "vuid": "VUID-vkCmdSetStencilWriteMask-commandBuffer-cmdpool",
   18101           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   18102         }
   18103       ]
   18104     },
   18105     "vkCmdSetStencilReference": {
   18106       "core": [
   18107         {
   18108           "vuid": "VUID-vkCmdSetStencilReference-None-00604",
   18109           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_STENCIL_REFERENCE</code> dynamic state enabled"
   18110         },
   18111         {
   18112           "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-parameter",
   18113           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   18114         },
   18115         {
   18116           "vuid": "VUID-vkCmdSetStencilReference-faceMask-parameter",
   18117           "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkStencilFaceFlagBits\">VkStencilFaceFlagBits</a> values"
   18118         },
   18119         {
   18120           "vuid": "VUID-vkCmdSetStencilReference-faceMask-requiredbitmask",
   18121           "text": " <code>faceMask</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18122         },
   18123         {
   18124           "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-recording",
   18125           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   18126         },
   18127         {
   18128           "vuid": "VUID-vkCmdSetStencilReference-commandBuffer-cmdpool",
   18129           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   18130         }
   18131       ]
   18132     },
   18133     "VkPipelineRepresentativeFragmentTestStateCreateInfoNV": {
   18134       "(VK_NV_representative_fragment_test)": [
   18135         {
   18136           "vuid": "VUID-VkPipelineRepresentativeFragmentTestStateCreateInfoNV-sType-sType",
   18137           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV</code>"
   18138         }
   18139       ]
   18140     },
   18141     "VkPipelineCoverageToColorStateCreateInfoNV": {
   18142       "(VK_NV_fragment_coverage_to_color)": [
   18143         {
   18144           "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-coverageToColorEnable-01404",
   18145           "text": " If <code>coverageToColorEnable</code> is <code>VK_TRUE</code>, then the render pass subpass indicated by <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>renderPass</code> and <a href=\"#VkGraphicsPipelineCreateInfo\">VkGraphicsPipelineCreateInfo</a>::<code>subpass</code> <strong class=\"purple\">must</strong> have a color attachment at the location selected by <code>coverageToColorLocation</code>, with a <a href=\"#VkFormat\">VkFormat</a> of <code>VK_FORMAT_R8_UINT</code>, <code>VK_FORMAT_R8_SINT</code>, <code>VK_FORMAT_R16_UINT</code>, <code>VK_FORMAT_R16_SINT</code>, <code>VK_FORMAT_R32_UINT</code>, or <code>VK_FORMAT_R32_SINT</code>"
   18146         },
   18147         {
   18148           "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-sType-sType",
   18149           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV</code>"
   18150         },
   18151         {
   18152           "vuid": "VUID-VkPipelineCoverageToColorStateCreateInfoNV-flags-zerobitmask",
   18153           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   18154         }
   18155       ]
   18156     },
   18157     "VkPipelineCoverageModulationStateCreateInfoNV": {
   18158       "(VK_NV_framebuffer_mixed_samples)": [
   18159         {
   18160           "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationTableEnable-01405",
   18161           "text": " If <code>coverageModulationTableEnable</code> is <code>VK_TRUE</code>, <code>coverageModulationTableCount</code> <strong class=\"purple\">must</strong> be equal to the number of rasterization samples divided by the number of color samples in the subpass."
   18162         },
   18163         {
   18164           "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-sType-sType",
   18165           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV</code>"
   18166         },
   18167         {
   18168           "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-flags-zerobitmask",
   18169           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   18170         },
   18171         {
   18172           "vuid": "VUID-VkPipelineCoverageModulationStateCreateInfoNV-coverageModulationMode-parameter",
   18173           "text": " <code>coverageModulationMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCoverageModulationModeNV\">VkCoverageModulationModeNV</a> value"
   18174         }
   18175       ]
   18176     },
   18177     "VkPipelineColorBlendStateCreateInfo": {
   18178       "core": [
   18179         {
   18180           "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-00605",
   18181           "text": " If the <a href=\"#features-independentBlend\">independent blending</a> feature is not enabled, all elements of <code>pAttachments</code> <strong class=\"purple\">must</strong> be identical"
   18182         },
   18183         {
   18184           "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00606",
   18185           "text": " If the <a href=\"#features-logicOp\">logic operations</a> feature is not enabled, <code>logicOpEnable</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   18186         },
   18187         {
   18188           "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-logicOpEnable-00607",
   18189           "text": " If <code>logicOpEnable</code> is <code>VK_TRUE</code>, <code>logicOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkLogicOp\">VkLogicOp</a> value"
   18190         },
   18191         {
   18192           "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-sType-sType",
   18193           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO</code>"
   18194         },
   18195         {
   18196           "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pNext-pNext",
   18197           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkPipelineColorBlendAdvancedStateCreateInfoEXT\">VkPipelineColorBlendAdvancedStateCreateInfoEXT</a>"
   18198         },
   18199         {
   18200           "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-flags-zerobitmask",
   18201           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   18202         },
   18203         {
   18204           "vuid": "VUID-VkPipelineColorBlendStateCreateInfo-pAttachments-parameter",
   18205           "text": " If <code>attachmentCount</code> is not <code>0</code>, <code>pAttachments</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>attachmentCount</code> valid <code>VkPipelineColorBlendAttachmentState</code> structures"
   18206         }
   18207       ]
   18208     },
   18209     "VkPipelineColorBlendAttachmentState": {
   18210       "core": [
   18211         {
   18212           "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-00608",
   18213           "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
   18214         },
   18215         {
   18216           "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-00609",
   18217           "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
   18218         },
   18219         {
   18220           "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-00610",
   18221           "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
   18222         },
   18223         {
   18224           "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-00611",
   18225           "text": " If the <a href=\"#features-dualSrcBlend\">dual source blending</a> feature is not enabled, <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_FACTOR_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR</code>, <code>VK_BLEND_FACTOR_SRC1_ALPHA</code>, or <code>VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA</code>"
   18226         },
   18227         {
   18228           "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcColorBlendFactor-parameter",
   18229           "text": " <code>srcColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
   18230         },
   18231         {
   18232           "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstColorBlendFactor-parameter",
   18233           "text": " <code>dstColorBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
   18234         },
   18235         {
   18236           "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-parameter",
   18237           "text": " <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
   18238         },
   18239         {
   18240           "vuid": "VUID-VkPipelineColorBlendAttachmentState-srcAlphaBlendFactor-parameter",
   18241           "text": " <code>srcAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
   18242         },
   18243         {
   18244           "vuid": "VUID-VkPipelineColorBlendAttachmentState-dstAlphaBlendFactor-parameter",
   18245           "text": " <code>dstAlphaBlendFactor</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendFactor\">VkBlendFactor</a> value"
   18246         },
   18247         {
   18248           "vuid": "VUID-VkPipelineColorBlendAttachmentState-alphaBlendOp-parameter",
   18249           "text": " <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOp\">VkBlendOp</a> value"
   18250         },
   18251         {
   18252           "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorWriteMask-parameter",
   18253           "text": " <code>colorWriteMask</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkColorComponentFlagBits\">VkColorComponentFlagBits</a> values"
   18254         }
   18255       ],
   18256       "(VK_EXT_blend_operation_advanced)": [
   18257         {
   18258           "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01406",
   18259           "text": " If either of <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> equal <code>alphaBlendOp</code>"
   18260         },
   18261         {
   18262           "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01407",
   18263           "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>colorBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments."
   18264         },
   18265         {
   18266           "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendIndependentBlend-01408",
   18267           "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendIndependentBlend</code> is <code>VK_FALSE</code> and <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <code>alphaBlendOp</code> <strong class=\"purple\">must</strong> be the same for all attachments."
   18268         },
   18269         {
   18270           "vuid": "VUID-VkPipelineColorBlendAttachmentState-advancedBlendAllOperations-01409",
   18271           "text": " If <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::<code>advancedBlendAllOperations</code> is <code>VK_FALSE</code>, then <code>colorBlendOp</code> <strong class=\"purple\">must</strong> not be <code>VK_BLEND_OP_ZERO_EXT</code>, <code>VK_BLEND_OP_SRC_EXT</code>, <code>VK_BLEND_OP_DST_EXT</code>, <code>VK_BLEND_OP_SRC_OVER_EXT</code>, <code>VK_BLEND_OP_DST_OVER_EXT</code>, <code>VK_BLEND_OP_SRC_IN_EXT</code>, <code>VK_BLEND_OP_DST_IN_EXT</code>, <code>VK_BLEND_OP_SRC_OUT_EXT</code>, <code>VK_BLEND_OP_DST_OUT_EXT</code>, <code>VK_BLEND_OP_SRC_ATOP_EXT</code>, <code>VK_BLEND_OP_DST_ATOP_EXT</code>, <code>VK_BLEND_OP_XOR_EXT</code>, <code>VK_BLEND_OP_INVERT_EXT</code>, <code>VK_BLEND_OP_INVERT_RGB_EXT</code>, <code>VK_BLEND_OP_LINEARDODGE_EXT</code>, <code>VK_BLEND_OP_LINEARBURN_EXT</code>, <code>VK_BLEND_OP_VIVIDLIGHT_EXT</code>, <code>VK_BLEND_OP_LINEARLIGHT_EXT</code>, <code>VK_BLEND_OP_PINLIGHT_EXT</code>, <code>VK_BLEND_OP_HARDMIX_EXT</code>, <code>VK_BLEND_OP_PLUS_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT</code>, <code>VK_BLEND_OP_PLUS_DARKER_EXT</code>, <code>VK_BLEND_OP_MINUS_EXT</code>, <code>VK_BLEND_OP_MINUS_CLAMPED_EXT</code>, <code>VK_BLEND_OP_CONTRAST_EXT</code>, <code>VK_BLEND_OP_INVERT_OVG_EXT</code>, <code>VK_BLEND_OP_RED_EXT</code>, <code>VK_BLEND_OP_GREEN_EXT</code>, or <code>VK_BLEND_OP_BLUE_EXT</code>"
   18272         },
   18273         {
   18274           "vuid": "VUID-VkPipelineColorBlendAttachmentState-colorBlendOp-01410",
   18275           "text": " If <code>colorBlendOp</code> or <code>alphaBlendOp</code> is an <a href=\"#framebuffer-blend-advanced\">advanced blend operation</a>, then <a href=\"#VkSubpassDescription\">VkSubpassDescription</a>::<code>colorAttachmentCount</code> of the subpass this pipeline is compiled against <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT\">VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT</a>::advancedBlendMaxColorAttachments"
   18276         }
   18277       ]
   18278     },
   18279     "vkCmdSetBlendConstants": {
   18280       "core": [
   18281         {
   18282           "vuid": "VUID-vkCmdSetBlendConstants-None-00612",
   18283           "text": " The bound graphics pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_DYNAMIC_STATE_BLEND_CONSTANTS</code> dynamic state enabled"
   18284         },
   18285         {
   18286           "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-parameter",
   18287           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   18288         },
   18289         {
   18290           "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-recording",
   18291           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   18292         },
   18293         {
   18294           "vuid": "VUID-vkCmdSetBlendConstants-commandBuffer-cmdpool",
   18295           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics operations"
   18296         }
   18297       ]
   18298     },
   18299     "VkPipelineColorBlendAdvancedStateCreateInfoEXT": {
   18300       "(VK_EXT_blend_operation_advanced)": [
   18301         {
   18302           "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-srcPremultiplied-01424",
   18303           "text": " If the <a href=\"#limits-advancedBlendNonPremultipliedSrcColor\">non-premultiplied source color</a> property is not supported, <code>srcPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
   18304         },
   18305         {
   18306           "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-dstPremultiplied-01425",
   18307           "text": " If the <a href=\"#limits-advancedBlendNonPremultipliedDstColor\">non-premultiplied destination color</a> property is not supported, <code>dstPremultiplied</code> <strong class=\"purple\">must</strong> be <code>VK_TRUE</code>"
   18308         },
   18309         {
   18310           "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-01426",
   18311           "text": " If the <a href=\"#limits-advancedBlendCorrelatedOverlap\">correlated overlap</a> property is not supported, <code>blendOverlap</code> <strong class=\"purple\">must</strong> be <code>VK_BLEND_OVERLAP_UNCORRELATED_EXT</code>"
   18312         },
   18313         {
   18314           "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-sType-sType",
   18315           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT</code>"
   18316         },
   18317         {
   18318           "vuid": "VUID-VkPipelineColorBlendAdvancedStateCreateInfoEXT-blendOverlap-parameter",
   18319           "text": " <code>blendOverlap</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkBlendOverlapEXT\">VkBlendOverlapEXT</a> value"
   18320         }
   18321       ]
   18322     },
   18323     "vkCmdDispatch": {
   18324       "core": [
   18325         {
   18326           "vuid": "VUID-vkCmdDispatch-groupCountX-00386",
   18327           "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
   18328         },
   18329         {
   18330           "vuid": "VUID-vkCmdDispatch-groupCountY-00387",
   18331           "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
   18332         },
   18333         {
   18334           "vuid": "VUID-vkCmdDispatch-groupCountZ-00388",
   18335           "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
   18336         },
   18337         {
   18338           "vuid": "VUID-vkCmdDispatch-None-00389",
   18339           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   18340         },
   18341         {
   18342           "vuid": "VUID-vkCmdDispatch-None-00390",
   18343           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   18344         },
   18345         {
   18346           "vuid": "VUID-vkCmdDispatch-None-00391",
   18347           "text": " A valid compute pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
   18348         },
   18349         {
   18350           "vuid": "VUID-vkCmdDispatch-None-00392",
   18351           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   18352         },
   18353         {
   18354           "vuid": "VUID-vkCmdDispatch-None-00393",
   18355           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   18356         },
   18357         {
   18358           "vuid": "VUID-vkCmdDispatch-None-00394",
   18359           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   18360         },
   18361         {
   18362           "vuid": "VUID-vkCmdDispatch-None-00395",
   18363           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   18364         },
   18365         {
   18366           "vuid": "VUID-vkCmdDispatch-None-00396",
   18367           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   18368         },
   18369         {
   18370           "vuid": "VUID-vkCmdDispatch-None-00397",
   18371           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   18372         },
   18373         {
   18374           "vuid": "VUID-vkCmdDispatch-None-02005",
   18375           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   18376         },
   18377         {
   18378           "vuid": "VUID-vkCmdDispatch-commandBuffer-parameter",
   18379           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   18380         },
   18381         {
   18382           "vuid": "VUID-vkCmdDispatch-commandBuffer-recording",
   18383           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   18384         },
   18385         {
   18386           "vuid": "VUID-vkCmdDispatch-commandBuffer-cmdpool",
   18387           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   18388         },
   18389         {
   18390           "vuid": "VUID-vkCmdDispatch-renderpass",
   18391           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   18392         }
   18393       ],
   18394       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   18395         {
   18396           "vuid": "VUID-vkCmdDispatch-None-02006",
   18397           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>."
   18398         }
   18399       ],
   18400       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   18401         {
   18402           "vuid": "VUID-vkCmdDispatch-None-00400",
   18403           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   18404         }
   18405       ],
   18406       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   18407         {
   18408           "vuid": "VUID-vkCmdDispatch-filterCubic-02609",
   18409           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   18410         },
   18411         {
   18412           "vuid": "VUID-vkCmdDispatch-filterCubicMinmax-02610",
   18413           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   18414         }
   18415       ],
   18416       "(VK_VERSION_1_1)": [
   18417         {
   18418           "vuid": "VUID-vkCmdDispatch-commandBuffer-01844",
   18419           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   18420         },
   18421         {
   18422           "vuid": "VUID-vkCmdDispatch-commandBuffer-01845",
   18423           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer."
   18424         },
   18425         {
   18426           "vuid": "VUID-vkCmdDispatch-commandBuffer-01846",
   18427           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the compute pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   18428         }
   18429       ],
   18430       "(VK_NV_corner_sampled_image)": [
   18431         {
   18432           "vuid": "VUID-vkCmdDispatch-flags-02040",
   18433           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   18434         }
   18435       ]
   18436     },
   18437     "vkCmdDispatchIndirect": {
   18438       "core": [
   18439         {
   18440           "vuid": "VUID-vkCmdDispatchIndirect-buffer-00401",
   18441           "text": " If <code>buffer</code> is non-sparse then it <strong class=\"purple\">must</strong> be bound completely and contiguously to a single <code>VkDeviceMemory</code> object"
   18442         },
   18443         {
   18444           "vuid": "VUID-vkCmdDispatchIndirect-None-00402",
   18445           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   18446         },
   18447         {
   18448           "vuid": "VUID-vkCmdDispatchIndirect-None-00403",
   18449           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   18450         },
   18451         {
   18452           "vuid": "VUID-vkCmdDispatchIndirect-None-00404",
   18453           "text": " A valid compute pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
   18454         },
   18455         {
   18456           "vuid": "VUID-vkCmdDispatchIndirect-buffer-00405",
   18457           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> have been created with the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   18458         },
   18459         {
   18460           "vuid": "VUID-vkCmdDispatchIndirect-offset-00406",
   18461           "text": " <code>offset</code> <strong class=\"purple\">must</strong> be a multiple of <code>4</code>"
   18462         },
   18463         {
   18464           "vuid": "VUID-vkCmdDispatchIndirect-offset-00407",
   18465           "text": " The sum of <code>offset</code> and the size of <code>VkDispatchIndirectCommand</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>buffer</code>"
   18466         },
   18467         {
   18468           "vuid": "VUID-vkCmdDispatchIndirect-None-00408",
   18469           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   18470         },
   18471         {
   18472           "vuid": "VUID-vkCmdDispatchIndirect-None-00409",
   18473           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   18474         },
   18475         {
   18476           "vuid": "VUID-vkCmdDispatchIndirect-None-00410",
   18477           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   18478         },
   18479         {
   18480           "vuid": "VUID-vkCmdDispatchIndirect-None-00411",
   18481           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   18482         },
   18483         {
   18484           "vuid": "VUID-vkCmdDispatchIndirect-None-00412",
   18485           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   18486         },
   18487         {
   18488           "vuid": "VUID-vkCmdDispatchIndirect-None-00413",
   18489           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   18490         },
   18491         {
   18492           "vuid": "VUID-vkCmdDispatchIndirect-None-02007",
   18493           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>."
   18494         },
   18495         {
   18496           "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-parameter",
   18497           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   18498         },
   18499         {
   18500           "vuid": "VUID-vkCmdDispatchIndirect-buffer-parameter",
   18501           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   18502         },
   18503         {
   18504           "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-recording",
   18505           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   18506         },
   18507         {
   18508           "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-cmdpool",
   18509           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   18510         },
   18511         {
   18512           "vuid": "VUID-vkCmdDispatchIndirect-renderpass",
   18513           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   18514         },
   18515         {
   18516           "vuid": "VUID-vkCmdDispatchIndirect-commonparent",
   18517           "text": " Both of <code>buffer</code>, and <code>commandBuffer</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   18518         }
   18519       ],
   18520       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)": [
   18521         {
   18522           "vuid": "VUID-vkCmdDispatchIndirect-None-02008",
   18523           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT</code>."
   18524         }
   18525       ],
   18526       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+!(VK_EXT_filter_cubic)": [
   18527         {
   18528           "vuid": "VUID-vkCmdDispatchIndirect-None-00416",
   18529           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   18530         }
   18531       ],
   18532       "(VK_IMG_filter_cubic,VK_EXT_filter_cubic)+(VK_EXT_filter_cubic)": [
   18533         {
   18534           "vuid": "VUID-vkCmdDispatchIndirect-filterCubic-02611",
   18535           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubic</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   18536         },
   18537         {
   18538           "vuid": "VUID-vkCmdDispatchIndirect-filterCubicMinmax-02612",
   18539           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_EXT</code> with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN_EXT or VK_SAMPLER_REDUCTION_MODE_MAX_EXT as a result of this command <strong class=\"purple\">must</strong> have a <a href=\"#VkImageViewType\">VkImageViewType</a> and format that supports cubic filtering together with minmax filtering, as specified by <code>VkFilterCubicImageViewImageFormatPropertiesEXT</code>::<code>filterCubicMinmax</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties2</code>"
   18540         }
   18541       ],
   18542       "(VK_VERSION_1_1)": [
   18543         {
   18544           "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-02639",
   18545           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> not be a protected command buffer"
   18546         },
   18547         {
   18548           "vuid": "VUID-vkCmdDispatchIndirect-commandBuffer-01847",
   18549           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_COMPUTE</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer."
   18550         }
   18551       ],
   18552       "(VK_NV_corner_sampled_image)": [
   18553         {
   18554           "vuid": "VUID-vkCmdDispatchIndirect-flags-02041",
   18555           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>."
   18556         }
   18557       ]
   18558     },
   18559     "VkDispatchIndirectCommand": {
   18560       "core": [
   18561         {
   18562           "vuid": "VUID-VkDispatchIndirectCommand-x-00417",
   18563           "text": " <code>x</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
   18564         },
   18565         {
   18566           "vuid": "VUID-VkDispatchIndirectCommand-y-00418",
   18567           "text": " <code>y</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
   18568         },
   18569         {
   18570           "vuid": "VUID-VkDispatchIndirectCommand-z-00419",
   18571           "text": " <code>z</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
   18572         }
   18573       ]
   18574     },
   18575     "vkCmdDispatchBase": {
   18576       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   18577         {
   18578           "vuid": "VUID-vkCmdDispatchBase-None-00420",
   18579           "text": " All valid usage rules from <a href=\"#vkCmdDispatch\">vkCmdDispatch</a> apply"
   18580         },
   18581         {
   18582           "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00421",
   18583           "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
   18584         },
   18585         {
   18586           "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00422",
   18587           "text": " <code>baseGroupX</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
   18588         },
   18589         {
   18590           "vuid": "VUID-vkCmdDispatchBase-baseGroupZ-00423",
   18591           "text": " <code>baseGroupZ</code> <strong class=\"purple\">must</strong> be less than <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
   18592         },
   18593         {
   18594           "vuid": "VUID-vkCmdDispatchBase-groupCountX-00424",
   18595           "text": " <code>groupCountX</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0] minus <code>baseGroupX</code>"
   18596         },
   18597         {
   18598           "vuid": "VUID-vkCmdDispatchBase-groupCountY-00425",
   18599           "text": " <code>groupCountY</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1] minus <code>baseGroupY</code>"
   18600         },
   18601         {
   18602           "vuid": "VUID-vkCmdDispatchBase-groupCountZ-00426",
   18603           "text": " <code>groupCountZ</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2] minus <code>baseGroupZ</code>"
   18604         },
   18605         {
   18606           "vuid": "VUID-vkCmdDispatchBase-baseGroupX-00427",
   18607           "text": " If any of <code>baseGroupX</code>, <code>baseGroupY</code>, or <code>baseGroupZ</code> are not zero, then the bound compute pipeline <strong class=\"purple\">must</strong> have been created with the <code>VK_PIPELINE_CREATE_DISPATCH_BASE</code> flag."
   18608         },
   18609         {
   18610           "vuid": "VUID-vkCmdDispatchBase-commandBuffer-parameter",
   18611           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   18612         },
   18613         {
   18614           "vuid": "VUID-vkCmdDispatchBase-commandBuffer-recording",
   18615           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   18616         },
   18617         {
   18618           "vuid": "VUID-vkCmdDispatchBase-commandBuffer-cmdpool",
   18619           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   18620         },
   18621         {
   18622           "vuid": "VUID-vkCmdDispatchBase-renderpass",
   18623           "text": " This command <strong class=\"purple\">must</strong> only be called outside of a render pass instance"
   18624         }
   18625       ]
   18626     },
   18627     "vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX": {
   18628       "(VK_NVX_device_generated_commands)": [
   18629         {
   18630           "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-physicalDevice-parameter",
   18631           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   18632         },
   18633         {
   18634           "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pFeatures-parameter",
   18635           "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsFeaturesNVX</code> structure"
   18636         },
   18637         {
   18638           "vuid": "VUID-vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX-pLimits-parameter",
   18639           "text": " <code>pLimits</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGeneratedCommandsLimitsNVX</code> structure"
   18640         }
   18641       ]
   18642     },
   18643     "VkDeviceGeneratedCommandsFeaturesNVX": {
   18644       "(VK_NVX_device_generated_commands)": [
   18645         {
   18646           "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-sType-sType",
   18647           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX</code>"
   18648         },
   18649         {
   18650           "vuid": "VUID-VkDeviceGeneratedCommandsFeaturesNVX-pNext-pNext",
   18651           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   18652         }
   18653       ]
   18654     },
   18655     "VkDeviceGeneratedCommandsLimitsNVX": {
   18656       "(VK_NVX_device_generated_commands)": [
   18657         {
   18658           "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-sType-sType",
   18659           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX</code>"
   18660         },
   18661         {
   18662           "vuid": "VUID-VkDeviceGeneratedCommandsLimitsNVX-pNext-pNext",
   18663           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   18664         }
   18665       ]
   18666     },
   18667     "vkCreateObjectTableNVX": {
   18668       "(VK_NVX_device_generated_commands)": [
   18669         {
   18670           "vuid": "VUID-vkCreateObjectTableNVX-device-parameter",
   18671           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   18672         },
   18673         {
   18674           "vuid": "VUID-vkCreateObjectTableNVX-pCreateInfo-parameter",
   18675           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkObjectTableCreateInfoNVX</code> structure"
   18676         },
   18677         {
   18678           "vuid": "VUID-vkCreateObjectTableNVX-pAllocator-parameter",
   18679           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   18680         },
   18681         {
   18682           "vuid": "VUID-vkCreateObjectTableNVX-pObjectTable-parameter",
   18683           "text": " <code>pObjectTable</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkObjectTableNVX</code> handle"
   18684         }
   18685       ]
   18686     },
   18687     "VkObjectTableCreateInfoNVX": {
   18688       "(VK_NVX_device_generated_commands)": [
   18689         {
   18690           "vuid": "VUID-VkObjectTableCreateInfoNVX-computeBindingPointSupport-01355",
   18691           "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>"
   18692         },
   18693         {
   18694           "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-01356",
   18695           "text": " Any value within <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> not exceed <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxObjectEntryCounts</code>"
   18696         },
   18697         {
   18698           "vuid": "VUID-VkObjectTableCreateInfoNVX-maxUniformBuffersPerDescriptor-01357",
   18699           "text": " <code>maxUniformBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
   18700         },
   18701         {
   18702           "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageBuffersPerDescriptor-01358",
   18703           "text": " <code>maxStorageBuffersPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
   18704         },
   18705         {
   18706           "vuid": "VUID-VkObjectTableCreateInfoNVX-maxStorageImagesPerDescriptor-01359",
   18707           "text": " <code>maxStorageImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
   18708         },
   18709         {
   18710           "vuid": "VUID-VkObjectTableCreateInfoNVX-maxSampledImagesPerDescriptor-01360",
   18711           "text": " <code>maxSampledImagesPerDescriptor</code> <strong class=\"purple\">must</strong> be within the limits supported by the device."
   18712         },
   18713         {
   18714           "vuid": "VUID-VkObjectTableCreateInfoNVX-sType-sType",
   18715           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX</code>"
   18716         },
   18717         {
   18718           "vuid": "VUID-VkObjectTableCreateInfoNVX-pNext-pNext",
   18719           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   18720         },
   18721         {
   18722           "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryTypes-parameter",
   18723           "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values"
   18724         },
   18725         {
   18726           "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryCounts-parameter",
   18727           "text": " <code>pObjectEntryCounts</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
   18728         },
   18729         {
   18730           "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-parameter",
   18731           "text": " <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid combinations of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
   18732         },
   18733         {
   18734           "vuid": "VUID-VkObjectTableCreateInfoNVX-pObjectEntryUsageFlags-requiredbitmask",
   18735           "text": " Each element of <code>pObjectEntryUsageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18736         },
   18737         {
   18738           "vuid": "VUID-VkObjectTableCreateInfoNVX-objectCount-arraylength",
   18739           "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   18740         }
   18741       ]
   18742     },
   18743     "vkDestroyObjectTableNVX": {
   18744       "(VK_NVX_device_generated_commands)": [
   18745         {
   18746           "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01361",
   18747           "text": " All submitted commands that refer to <code>objectTable</code> <strong class=\"purple\">must</strong> have completed execution."
   18748         },
   18749         {
   18750           "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01362",
   18751           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here."
   18752         },
   18753         {
   18754           "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-01363",
   18755           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>."
   18756         },
   18757         {
   18758           "vuid": "VUID-vkDestroyObjectTableNVX-device-parameter",
   18759           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   18760         },
   18761         {
   18762           "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parameter",
   18763           "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
   18764         },
   18765         {
   18766           "vuid": "VUID-vkDestroyObjectTableNVX-pAllocator-parameter",
   18767           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   18768         },
   18769         {
   18770           "vuid": "VUID-vkDestroyObjectTableNVX-objectTable-parent",
   18771           "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   18772         }
   18773       ]
   18774     },
   18775     "vkRegisterObjectsNVX": {
   18776       "(VK_NVX_device_generated_commands)": [
   18777         {
   18778           "vuid": "VUID-vkRegisterObjectsNVX-pObjectTableEntry-01364",
   18779           "text": " The contents of <code>pObjectTableEntry</code> <strong class=\"purple\">must</strong> yield plausible bindings supported by the device."
   18780         },
   18781         {
   18782           "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01365",
   18783           "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> not be a registered resource already."
   18784         },
   18785         {
   18786           "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-01366",
   18787           "text": " Any value inside <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be below the appropriate <code>VkObjectTableCreateInfoNVX</code>::<code>pObjectEntryCounts</code> limits provided at <code>objectTable</code> creation time."
   18788         },
   18789         {
   18790           "vuid": "VUID-vkRegisterObjectsNVX-device-parameter",
   18791           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   18792         },
   18793         {
   18794           "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parameter",
   18795           "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
   18796         },
   18797         {
   18798           "vuid": "VUID-vkRegisterObjectsNVX-ppObjectTableEntries-parameter",
   18799           "text": " <code>ppObjectTableEntries</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkObjectTableEntryNVX</code> structures"
   18800         },
   18801         {
   18802           "vuid": "VUID-vkRegisterObjectsNVX-pObjectIndices-parameter",
   18803           "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
   18804         },
   18805         {
   18806           "vuid": "VUID-vkRegisterObjectsNVX-objectCount-arraylength",
   18807           "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   18808         },
   18809         {
   18810           "vuid": "VUID-vkRegisterObjectsNVX-objectTable-parent",
   18811           "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   18812         }
   18813       ]
   18814     },
   18815     "VkObjectTableEntryNVX": {
   18816       "(VK_NVX_device_generated_commands)": [
   18817         {
   18818           "vuid": "VUID-VkObjectTableEntryNVX-computeBindingPointSupport-01367",
   18819           "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX</code>"
   18820         },
   18821         {
   18822           "vuid": "VUID-VkObjectTableEntryNVX-type-parameter",
   18823           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
   18824         },
   18825         {
   18826           "vuid": "VUID-VkObjectTableEntryNVX-flags-parameter",
   18827           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
   18828         },
   18829         {
   18830           "vuid": "VUID-VkObjectTableEntryNVX-flags-requiredbitmask",
   18831           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18832         }
   18833       ]
   18834     },
   18835     "VkObjectTablePipelineEntryNVX": {
   18836       "(VK_NVX_device_generated_commands)": [
   18837         {
   18838           "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-01368",
   18839           "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX</code>"
   18840         },
   18841         {
   18842           "vuid": "VUID-VkObjectTablePipelineEntryNVX-type-parameter",
   18843           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
   18844         },
   18845         {
   18846           "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-parameter",
   18847           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
   18848         },
   18849         {
   18850           "vuid": "VUID-VkObjectTablePipelineEntryNVX-flags-requiredbitmask",
   18851           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18852         },
   18853         {
   18854           "vuid": "VUID-VkObjectTablePipelineEntryNVX-pipeline-parameter",
   18855           "text": " <code>pipeline</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipeline</code> handle"
   18856         }
   18857       ]
   18858     },
   18859     "VkObjectTableDescriptorSetEntryNVX": {
   18860       "(VK_NVX_device_generated_commands)": [
   18861         {
   18862           "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-01369",
   18863           "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX</code>"
   18864         },
   18865         {
   18866           "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-type-parameter",
   18867           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
   18868         },
   18869         {
   18870           "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-parameter",
   18871           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
   18872         },
   18873         {
   18874           "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-flags-requiredbitmask",
   18875           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18876         },
   18877         {
   18878           "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-pipelineLayout-parameter",
   18879           "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   18880         },
   18881         {
   18882           "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-descriptorSet-parameter",
   18883           "text": " <code>descriptorSet</code> <strong class=\"purple\">must</strong> be a valid <code>VkDescriptorSet</code> handle"
   18884         },
   18885         {
   18886           "vuid": "VUID-VkObjectTableDescriptorSetEntryNVX-commonparent",
   18887           "text": " Both of <code>descriptorSet</code>, and <code>pipelineLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   18888         }
   18889       ]
   18890     },
   18891     "VkObjectTableVertexBufferEntryNVX": {
   18892       "(VK_NVX_device_generated_commands)": [
   18893         {
   18894           "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-01370",
   18895           "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX</code>"
   18896         },
   18897         {
   18898           "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-type-parameter",
   18899           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
   18900         },
   18901         {
   18902           "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-parameter",
   18903           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
   18904         },
   18905         {
   18906           "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-flags-requiredbitmask",
   18907           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18908         },
   18909         {
   18910           "vuid": "VUID-VkObjectTableVertexBufferEntryNVX-buffer-parameter",
   18911           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   18912         }
   18913       ]
   18914     },
   18915     "VkObjectTableIndexBufferEntryNVX": {
   18916       "(VK_NVX_device_generated_commands)": [
   18917         {
   18918           "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-01371",
   18919           "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX</code>"
   18920         },
   18921         {
   18922           "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-type-parameter",
   18923           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
   18924         },
   18925         {
   18926           "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-parameter",
   18927           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
   18928         },
   18929         {
   18930           "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-flags-requiredbitmask",
   18931           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18932         },
   18933         {
   18934           "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-buffer-parameter",
   18935           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   18936         },
   18937         {
   18938           "vuid": "VUID-VkObjectTableIndexBufferEntryNVX-indexType-parameter",
   18939           "text": " <code>indexType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndexType\">VkIndexType</a> value"
   18940         }
   18941       ]
   18942     },
   18943     "VkObjectTablePushConstantEntryNVX": {
   18944       "(VK_NVX_device_generated_commands)": [
   18945         {
   18946           "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-01372",
   18947           "text": " <code>type</code> <strong class=\"purple\">must</strong> be <code>VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX</code>"
   18948         },
   18949         {
   18950           "vuid": "VUID-VkObjectTablePushConstantEntryNVX-type-parameter",
   18951           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> value"
   18952         },
   18953         {
   18954           "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-parameter",
   18955           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkObjectEntryUsageFlagBitsNVX\">VkObjectEntryUsageFlagBitsNVX</a> values"
   18956         },
   18957         {
   18958           "vuid": "VUID-VkObjectTablePushConstantEntryNVX-flags-requiredbitmask",
   18959           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18960         },
   18961         {
   18962           "vuid": "VUID-VkObjectTablePushConstantEntryNVX-pipelineLayout-parameter",
   18963           "text": " <code>pipelineLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkPipelineLayout</code> handle"
   18964         },
   18965         {
   18966           "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-parameter",
   18967           "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkShaderStageFlagBits\">VkShaderStageFlagBits</a> values"
   18968         },
   18969         {
   18970           "vuid": "VUID-VkObjectTablePushConstantEntryNVX-stageFlags-requiredbitmask",
   18971           "text": " <code>stageFlags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   18972         }
   18973       ]
   18974     },
   18975     "vkUnregisterObjectsNVX": {
   18976       "(VK_NVX_device_generated_commands)": [
   18977         {
   18978           "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-01373",
   18979           "text": " At any <code>pObjectIndices</code> there <strong class=\"purple\">must</strong> be a registered resource already."
   18980         },
   18981         {
   18982           "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-01374",
   18983           "text": " The <code>pObjectEntryTypes</code> of the resource at <code>pObjectIndices</code> <strong class=\"purple\">must</strong> match."
   18984         },
   18985         {
   18986           "vuid": "VUID-vkUnregisterObjectsNVX-None-01375",
   18987           "text": " All operations on the device using the registered resource <strong class=\"purple\">must</strong> have been completed."
   18988         },
   18989         {
   18990           "vuid": "VUID-vkUnregisterObjectsNVX-device-parameter",
   18991           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   18992         },
   18993         {
   18994           "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parameter",
   18995           "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
   18996         },
   18997         {
   18998           "vuid": "VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-parameter",
   18999           "text": " <code>pObjectEntryTypes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <a href=\"#VkObjectEntryTypeNVX\">VkObjectEntryTypeNVX</a> values"
   19000         },
   19001         {
   19002           "vuid": "VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter",
   19003           "text": " <code>pObjectIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> <code>uint32_t</code> values"
   19004         },
   19005         {
   19006           "vuid": "VUID-vkUnregisterObjectsNVX-objectCount-arraylength",
   19007           "text": " <code>objectCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   19008         },
   19009         {
   19010           "vuid": "VUID-vkUnregisterObjectsNVX-objectTable-parent",
   19011           "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   19012         }
   19013       ]
   19014     },
   19015     "VkIndirectCommandsLayoutTokenNVX": {
   19016       "(VK_NVX_device_generated_commands)": [
   19017         {
   19018           "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-bindingUnit-01342",
   19019           "text": " <code>bindingUnit</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands."
   19020         },
   19021         {
   19022           "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-dynamicCount-01343",
   19023           "text": " <code>dynamicCount</code> <strong class=\"purple\">must</strong> stay within device supported limits for the appropriate commands."
   19024         },
   19025         {
   19026           "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-divisor-01344",
   19027           "text": " <code>divisor</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and a power of two."
   19028         },
   19029         {
   19030           "vuid": "VUID-VkIndirectCommandsLayoutTokenNVX-tokenType-parameter",
   19031           "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value"
   19032         }
   19033       ]
   19034     },
   19035     "VkIndirectCommandsTokenNVX": {
   19036       "(VK_NVX_device_generated_commands)": [
   19037         {
   19038           "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-01345",
   19039           "text": " The <code>buffer</code>&#8217;s usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set."
   19040         },
   19041         {
   19042           "vuid": "VUID-VkIndirectCommandsTokenNVX-offset-01346",
   19043           "text": " The <code>offset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minCommandsTokenBufferOffsetAlignment</code>."
   19044         },
   19045         {
   19046           "vuid": "VUID-VkIndirectCommandsTokenNVX-tokenType-parameter",
   19047           "text": " <code>tokenType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkIndirectCommandsTokenTypeNVX\">VkIndirectCommandsTokenTypeNVX</a> value"
   19048         },
   19049         {
   19050           "vuid": "VUID-VkIndirectCommandsTokenNVX-buffer-parameter",
   19051           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   19052         }
   19053       ]
   19054     },
   19055     "vkCreateIndirectCommandsLayoutNVX": {
   19056       "(VK_NVX_device_generated_commands)": [
   19057         {
   19058           "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-device-parameter",
   19059           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   19060         },
   19061         {
   19062           "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pCreateInfo-parameter",
   19063           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIndirectCommandsLayoutCreateInfoNVX</code> structure"
   19064         },
   19065         {
   19066           "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pAllocator-parameter",
   19067           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   19068         },
   19069         {
   19070           "vuid": "VUID-vkCreateIndirectCommandsLayoutNVX-pIndirectCommandsLayout-parameter",
   19071           "text": " <code>pIndirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkIndirectCommandsLayoutNVX</code> handle"
   19072         }
   19073       ]
   19074     },
   19075     "VkIndirectCommandsLayoutCreateInfoNVX": {
   19076       "(VK_NVX_device_generated_commands)": [
   19077         {
   19078           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-01347",
   19079           "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and below <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>maxIndirectCommandsLayoutTokenCount</code>"
   19080         },
   19081         {
   19082           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-computeBindingPointSupport-01348",
   19083           "text": " If the <code>VkDeviceGeneratedCommandsFeaturesNVX</code>::<code>computeBindingPointSupport</code> feature is not enabled, then <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> not be <code>VK_PIPELINE_BIND_POINT_COMPUTE</code>"
   19084         },
   19085         {
   19086           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01349",
   19087           "text": " If <code>pTokens</code> contains an entry of <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX</code> it <strong class=\"purple\">must</strong> be the first element of the array and there <strong class=\"purple\">must</strong> be only a single element of such token type."
   19088         },
   19089         {
   19090           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01350",
   19091           "text": " All state binding tokens in <code>pTokens</code> <strong class=\"purple\">must</strong> occur prior work provoking tokens (<code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX</code>, <code>VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX</code>)."
   19092         },
   19093         {
   19094           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-01351",
   19095           "text": " The content of <code>pTokens</code> <strong class=\"purple\">must</strong> include one single work provoking token that is compatible with the <code>pipelineBindPoint</code>."
   19096         },
   19097         {
   19098           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-sType-sType",
   19099           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX</code>"
   19100         },
   19101         {
   19102           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pNext-pNext",
   19103           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19104         },
   19105         {
   19106           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pipelineBindPoint-parameter",
   19107           "text": " <code>pipelineBindPoint</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPipelineBindPoint\">VkPipelineBindPoint</a> value"
   19108         },
   19109         {
   19110           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-parameter",
   19111           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkIndirectCommandsLayoutUsageFlagBitsNVX\">VkIndirectCommandsLayoutUsageFlagBitsNVX</a> values"
   19112         },
   19113         {
   19114           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-flags-requiredbitmask",
   19115           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   19116         },
   19117         {
   19118           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-pTokens-parameter",
   19119           "text": " <code>pTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tokenCount</code> valid <code>VkIndirectCommandsLayoutTokenNVX</code> structures"
   19120         },
   19121         {
   19122           "vuid": "VUID-VkIndirectCommandsLayoutCreateInfoNVX-tokenCount-arraylength",
   19123           "text": " <code>tokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   19124         }
   19125       ]
   19126     },
   19127     "vkDestroyIndirectCommandsLayoutNVX": {
   19128       "(VK_NVX_device_generated_commands)": [
   19129         {
   19130           "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-01352",
   19131           "text": " All submitted commands that refer to <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have completed execution"
   19132         },
   19133         {
   19134           "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01353",
   19135           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   19136         },
   19137         {
   19138           "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-objectTable-01354",
   19139           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>objectTable</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19140         },
   19141         {
   19142           "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-device-parameter",
   19143           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   19144         },
   19145         {
   19146           "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parameter",
   19147           "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
   19148         },
   19149         {
   19150           "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-pAllocator-parameter",
   19151           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   19152         },
   19153         {
   19154           "vuid": "VUID-vkDestroyIndirectCommandsLayoutNVX-indirectCommandsLayout-parent",
   19155           "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   19156         }
   19157       ]
   19158     },
   19159     "vkCmdReserveSpaceForCommandsNVX": {
   19160       "(VK_NVX_device_generated_commands)": [
   19161         {
   19162           "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01329",
   19163           "text": " The provided <code>commandBuffer</code> <strong class=\"purple\">must</strong> not have had a prior space reservation since its creation or the last reset."
   19164         },
   19165         {
   19166           "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-01330",
   19167           "text": " The state of the <code>commandBuffer</code> <strong class=\"purple\">must</strong> be legal to execute all commands within the sequence provided by the <code>indirectCommandsLayout</code> member of <code>pProcessCommandsInfo</code>."
   19168         },
   19169         {
   19170           "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-parameter",
   19171           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   19172         },
   19173         {
   19174           "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-pReserveSpaceInfo-parameter",
   19175           "text": " <code>pReserveSpaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdReserveSpaceForCommandsInfoNVX</code> structure"
   19176         },
   19177         {
   19178           "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-recording",
   19179           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   19180         },
   19181         {
   19182           "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-commandBuffer-cmdpool",
   19183           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   19184         },
   19185         {
   19186           "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-renderpass",
   19187           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   19188         },
   19189         {
   19190           "vuid": "VUID-vkCmdReserveSpaceForCommandsNVX-bufferlevel",
   19191           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a secondary <code>VkCommandBuffer</code>"
   19192         }
   19193       ]
   19194     },
   19195     "VkCmdReserveSpaceForCommandsInfoNVX": {
   19196       "(VK_NVX_device_generated_commands)": [
   19197         {
   19198           "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-sType-sType",
   19199           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX</code>"
   19200         },
   19201         {
   19202           "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-pNext-pNext",
   19203           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19204         },
   19205         {
   19206           "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-objectTable-parameter",
   19207           "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
   19208         },
   19209         {
   19210           "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-indirectCommandsLayout-parameter",
   19211           "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
   19212         },
   19213         {
   19214           "vuid": "VUID-VkCmdReserveSpaceForCommandsInfoNVX-commonparent",
   19215           "text": " Both of <code>indirectCommandsLayout</code>, and <code>objectTable</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   19216         }
   19217       ]
   19218     },
   19219     "vkCmdProcessCommandsNVX": {
   19220       "(VK_NVX_device_generated_commands)": [
   19221         {
   19222           "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-parameter",
   19223           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   19224         },
   19225         {
   19226           "vuid": "VUID-vkCmdProcessCommandsNVX-pProcessCommandsInfo-parameter",
   19227           "text": " <code>pProcessCommandsInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkCmdProcessCommandsInfoNVX</code> structure"
   19228         },
   19229         {
   19230           "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-recording",
   19231           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   19232         },
   19233         {
   19234           "vuid": "VUID-vkCmdProcessCommandsNVX-commandBuffer-cmdpool",
   19235           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   19236         },
   19237         {
   19238           "vuid": "VUID-vkCmdProcessCommandsNVX-renderpass",
   19239           "text": " This command <strong class=\"purple\">must</strong> only be called inside of a render pass instance"
   19240         }
   19241       ]
   19242     },
   19243     "VkCmdProcessCommandsInfoNVX": {
   19244       "(VK_NVX_device_generated_commands)": [
   19245         {
   19246           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-01331",
   19247           "text": " The provided <code>objectTable</code> <strong class=\"purple\">must</strong> include all objects referenced by the generation process"
   19248         },
   19249         {
   19250           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-01332",
   19251           "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> match the <code>indirectCommandsLayout</code>&#8217;s <code>tokenCount</code>"
   19252         },
   19253         {
   19254           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-tokenType-01333",
   19255           "text": " The <code>tokenType</code> member of each entry in the <code>pIndirectCommandsTokens</code> array <strong class=\"purple\">must</strong> match the values used at creation time of <code>indirectCommandsLayout</code>"
   19256         },
   19257         {
   19258           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01334",
   19259           "text": " If <code>targetCommandBuffer</code> is provided, it <strong class=\"purple\">must</strong> have reserved command space"
   19260         },
   19261         {
   19262           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01335",
   19263           "text": " If <code>targetCommandBuffer</code> is provided, the <code>objectTable</code> <strong class=\"purple\">must</strong> match the reservation&#8217;s <code>objectTable</code> and <strong class=\"purple\">must</strong> have had all referenced objects registered at reservation time"
   19264         },
   19265         {
   19266           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01336",
   19267           "text": " If <code>targetCommandBuffer</code> is provided, the <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> match the reservation&#8217;s <code>indirectCommandsLayout</code>"
   19268         },
   19269         {
   19270           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-01337",
   19271           "text": " If <code>targetCommandBuffer</code> is provided, the <code>maxSequencesCount</code> <strong class=\"purple\">must</strong> not exceed the reservation&#8217;s <code>maxSequencesCount</code>"
   19272         },
   19273         {
   19274           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01338",
   19275           "text": " If <code>sequencesCountBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   19276         },
   19277         {
   19278           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-01339",
   19279           "text": " If <code>sequencesCountBuffer</code> is used, <code>sequencesCountOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceCountBufferOffsetAlignment</code>"
   19280         },
   19281         {
   19282           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01340",
   19283           "text": " If <code>sequencesIndexBuffer</code> is used, its usage flag <strong class=\"purple\">must</strong> have the <code>VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT</code> bit set"
   19284         },
   19285         {
   19286           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-01341",
   19287           "text": " If <code>sequencesIndexBuffer</code> is used, <code>sequencesIndexOffset</code> <strong class=\"purple\">must</strong> be aligned to <code>VkDeviceGeneratedCommandsLimitsNVX</code>::<code>minSequenceIndexBufferOffsetAlignment</code>"
   19288         },
   19289         {
   19290           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sType-sType",
   19291           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX</code>"
   19292         },
   19293         {
   19294           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pNext-pNext",
   19295           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19296         },
   19297         {
   19298           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-objectTable-parameter",
   19299           "text": " <code>objectTable</code> <strong class=\"purple\">must</strong> be a valid <code>VkObjectTableNVX</code> handle"
   19300         },
   19301         {
   19302           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsLayout-parameter",
   19303           "text": " <code>indirectCommandsLayout</code> <strong class=\"purple\">must</strong> be a valid <code>VkIndirectCommandsLayoutNVX</code> handle"
   19304         },
   19305         {
   19306           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-pIndirectCommandsTokens-parameter",
   19307           "text": " <code>pIndirectCommandsTokens</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>indirectCommandsTokenCount</code> valid <code>VkIndirectCommandsTokenNVX</code> structures"
   19308         },
   19309         {
   19310           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-targetCommandBuffer-parameter",
   19311           "text": " If <code>targetCommandBuffer</code> is not <code>NULL</code>, <code>targetCommandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   19312         },
   19313         {
   19314           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesCountBuffer-parameter",
   19315           "text": " If <code>sequencesCountBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesCountBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   19316         },
   19317         {
   19318           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-sequencesIndexBuffer-parameter",
   19319           "text": " If <code>sequencesIndexBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>sequencesIndexBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   19320         },
   19321         {
   19322           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-indirectCommandsTokenCount-arraylength",
   19323           "text": " <code>indirectCommandsTokenCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   19324         },
   19325         {
   19326           "vuid": "VUID-VkCmdProcessCommandsInfoNVX-commonparent",
   19327           "text": " Each of <code>indirectCommandsLayout</code>, <code>objectTable</code>, <code>sequencesCountBuffer</code>, <code>sequencesIndexBuffer</code>, and <code>targetCommandBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   19328         }
   19329       ]
   19330     },
   19331     "vkGetPhysicalDeviceSparseImageFormatProperties": {
   19332       "core": [
   19333         {
   19334           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-01094",
   19335           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created"
   19336         },
   19337         {
   19338           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-physicalDevice-parameter",
   19339           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   19340         },
   19341         {
   19342           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-format-parameter",
   19343           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   19344         },
   19345         {
   19346           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-type-parameter",
   19347           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
   19348         },
   19349         {
   19350           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-samples-parameter",
   19351           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
   19352         },
   19353         {
   19354           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-parameter",
   19355           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   19356         },
   19357         {
   19358           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-usage-requiredbitmask",
   19359           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   19360         },
   19361         {
   19362           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-tiling-parameter",
   19363           "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
   19364         },
   19365         {
   19366           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pPropertyCount-parameter",
   19367           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   19368         },
   19369         {
   19370           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties-pProperties-parameter",
   19371           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkSparseImageFormatProperties</code> structures"
   19372         }
   19373       ]
   19374     },
   19375     "vkGetPhysicalDeviceSparseImageFormatProperties2": {
   19376       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   19377         {
   19378           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-physicalDevice-parameter",
   19379           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   19380         },
   19381         {
   19382           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pFormatInfo-parameter",
   19383           "text": " <code>pFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSparseImageFormatInfo2</code> structure"
   19384         },
   19385         {
   19386           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pPropertyCount-parameter",
   19387           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   19388         },
   19389         {
   19390           "vuid": "VUID-vkGetPhysicalDeviceSparseImageFormatProperties2-pProperties-parameter",
   19391           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkSparseImageFormatProperties2</code> structures"
   19392         }
   19393       ]
   19394     },
   19395     "VkPhysicalDeviceSparseImageFormatInfo2": {
   19396       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   19397         {
   19398           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-01095",
   19399           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a bit value that is set in <code>VkImageFormatProperties</code>::<code>sampleCounts</code> returned by <code>vkGetPhysicalDeviceImageFormatProperties</code> with <code>format</code>, <code>type</code>, <code>tiling</code>, and <code>usage</code> equal to those in this command and <code>flags</code> equal to the value that is set in <code>VkImageCreateInfo</code>::<code>flags</code> when the image is created"
   19400         },
   19401         {
   19402           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-sType-sType",
   19403           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2</code>"
   19404         },
   19405         {
   19406           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-pNext-pNext",
   19407           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19408         },
   19409         {
   19410           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-format-parameter",
   19411           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   19412         },
   19413         {
   19414           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-type-parameter",
   19415           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
   19416         },
   19417         {
   19418           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-samples-parameter",
   19419           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
   19420         },
   19421         {
   19422           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-parameter",
   19423           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   19424         },
   19425         {
   19426           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-usage-requiredbitmask",
   19427           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   19428         },
   19429         {
   19430           "vuid": "VUID-VkPhysicalDeviceSparseImageFormatInfo2-tiling-parameter",
   19431           "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
   19432         }
   19433       ]
   19434     },
   19435     "VkSparseImageFormatProperties2": {
   19436       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   19437         {
   19438           "vuid": "VUID-VkSparseImageFormatProperties2-sType-sType",
   19439           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2</code>"
   19440         },
   19441         {
   19442           "vuid": "VUID-VkSparseImageFormatProperties2-pNext-pNext",
   19443           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19444         }
   19445       ]
   19446     },
   19447     "vkGetImageSparseMemoryRequirements": {
   19448       "core": [
   19449         {
   19450           "vuid": "VUID-vkGetImageSparseMemoryRequirements-device-parameter",
   19451           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   19452         },
   19453         {
   19454           "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parameter",
   19455           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   19456         },
   19457         {
   19458           "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirementCount-parameter",
   19459           "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   19460         },
   19461         {
   19462           "vuid": "VUID-vkGetImageSparseMemoryRequirements-pSparseMemoryRequirements-parameter",
   19463           "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements</code> structures"
   19464         },
   19465         {
   19466           "vuid": "VUID-vkGetImageSparseMemoryRequirements-image-parent",
   19467           "text": " <code>image</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   19468         }
   19469       ]
   19470     },
   19471     "vkGetImageSparseMemoryRequirements2": {
   19472       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
   19473         {
   19474           "vuid": "VUID-vkGetImageSparseMemoryRequirements2-device-parameter",
   19475           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   19476         },
   19477         {
   19478           "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pInfo-parameter",
   19479           "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImageSparseMemoryRequirementsInfo2</code> structure"
   19480         },
   19481         {
   19482           "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirementCount-parameter",
   19483           "text": " <code>pSparseMemoryRequirementCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   19484         },
   19485         {
   19486           "vuid": "VUID-vkGetImageSparseMemoryRequirements2-pSparseMemoryRequirements-parameter",
   19487           "text": " If the value referenced by <code>pSparseMemoryRequirementCount</code> is not <code>0</code>, and <code>pSparseMemoryRequirements</code> is not <code>NULL</code>, <code>pSparseMemoryRequirements</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSparseMemoryRequirementCount</code> <code>VkSparseImageMemoryRequirements2</code> structures"
   19488         }
   19489       ]
   19490     },
   19491     "VkImageSparseMemoryRequirementsInfo2": {
   19492       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
   19493         {
   19494           "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-sType-sType",
   19495           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2</code>"
   19496         },
   19497         {
   19498           "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-pNext-pNext",
   19499           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19500         },
   19501         {
   19502           "vuid": "VUID-VkImageSparseMemoryRequirementsInfo2-image-parameter",
   19503           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   19504         }
   19505       ]
   19506     },
   19507     "VkSparseImageMemoryRequirements2": {
   19508       "(VK_VERSION_1_1,VK_KHR_get_memory_requirements2)": [
   19509         {
   19510           "vuid": "VUID-VkSparseImageMemoryRequirements2-sType-sType",
   19511           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2</code>"
   19512         },
   19513         {
   19514           "vuid": "VUID-VkSparseImageMemoryRequirements2-pNext-pNext",
   19515           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19516         }
   19517       ]
   19518     },
   19519     "VkSparseMemoryBind": {
   19520       "core": [
   19521         {
   19522           "vuid": "VUID-VkSparseMemoryBind-memory-01096",
   19523           "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the resource, as described in section <a href=\"#resources-association\">Resource Memory Association</a>"
   19524         },
   19525         {
   19526           "vuid": "VUID-VkSparseMemoryBind-memory-01097",
   19527           "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> not have been created with a memory type that reports <code>VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT</code> bit set"
   19528         },
   19529         {
   19530           "vuid": "VUID-VkSparseMemoryBind-size-01098",
   19531           "text": " <code>size</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   19532         },
   19533         {
   19534           "vuid": "VUID-VkSparseMemoryBind-resourceOffset-01099",
   19535           "text": " <code>resourceOffset</code> <strong class=\"purple\">must</strong> be less than the size of the resource"
   19536         },
   19537         {
   19538           "vuid": "VUID-VkSparseMemoryBind-size-01100",
   19539           "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of the resource minus <code>resourceOffset</code>"
   19540         },
   19541         {
   19542           "vuid": "VUID-VkSparseMemoryBind-memoryOffset-01101",
   19543           "text": " <code>memoryOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>memory</code>"
   19544         },
   19545         {
   19546           "vuid": "VUID-VkSparseMemoryBind-size-01102",
   19547           "text": " <code>size</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>memory</code> minus <code>memoryOffset</code>"
   19548         },
   19549         {
   19550           "vuid": "VUID-VkSparseMemoryBind-memory-parameter",
   19551           "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   19552         },
   19553         {
   19554           "vuid": "VUID-VkSparseMemoryBind-flags-parameter",
   19555           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
   19556         }
   19557       ]
   19558     },
   19559     "VkSparseBufferMemoryBindInfo": {
   19560       "core": [
   19561         {
   19562           "vuid": "VUID-VkSparseBufferMemoryBindInfo-buffer-parameter",
   19563           "text": " <code>buffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   19564         },
   19565         {
   19566           "vuid": "VUID-VkSparseBufferMemoryBindInfo-pBinds-parameter",
   19567           "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures"
   19568         },
   19569         {
   19570           "vuid": "VUID-VkSparseBufferMemoryBindInfo-bindCount-arraylength",
   19571           "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   19572         }
   19573       ]
   19574     },
   19575     "VkSparseImageOpaqueMemoryBindInfo": {
   19576       "core": [
   19577         {
   19578           "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-01103",
   19579           "text": " If the <code>flags</code> member of any element of <code>pBinds</code> contains <code>VK_SPARSE_MEMORY_BIND_METADATA_BIT</code>, the binding range defined <strong class=\"purple\">must</strong> be within the mip tail region of the metadata aspect of <code>image</code>"
   19580         },
   19581         {
   19582           "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-image-parameter",
   19583           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   19584         },
   19585         {
   19586           "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-pBinds-parameter",
   19587           "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseMemoryBind</code> structures"
   19588         },
   19589         {
   19590           "vuid": "VUID-VkSparseImageOpaqueMemoryBindInfo-bindCount-arraylength",
   19591           "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   19592         }
   19593       ]
   19594     },
   19595     "VkSparseImageMemoryBindInfo": {
   19596       "core": [
   19597         {
   19598           "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01722",
   19599           "text": " The <code>subresource.mipLevel</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>mipLevels</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   19600         },
   19601         {
   19602           "vuid": "VUID-VkSparseImageMemoryBindInfo-subresource-01723",
   19603           "text": " The <code>subresource.arrayLayer</code> member of each element of <code>pBinds</code> <strong class=\"purple\">must</strong> be less than the <code>arrayLayers</code> specified in <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a> when <code>image</code> was created"
   19604         },
   19605         {
   19606           "vuid": "VUID-VkSparseImageMemoryBindInfo-image-parameter",
   19607           "text": " <code>image</code> <strong class=\"purple\">must</strong> be a valid <code>VkImage</code> handle"
   19608         },
   19609         {
   19610           "vuid": "VUID-VkSparseImageMemoryBindInfo-pBinds-parameter",
   19611           "text": " <code>pBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindCount</code> valid <code>VkSparseImageMemoryBind</code> structures"
   19612         },
   19613         {
   19614           "vuid": "VUID-VkSparseImageMemoryBindInfo-bindCount-arraylength",
   19615           "text": " <code>bindCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   19616         }
   19617       ]
   19618     },
   19619     "VkSparseImageMemoryBind": {
   19620       "core": [
   19621         {
   19622           "vuid": "VUID-VkSparseImageMemoryBind-memory-01104",
   19623           "text": " If the <a href=\"#features-sparseResidencyAliased\">sparse aliased residency</a> feature is not enabled, and if any other resources are bound to ranges of <code>memory</code>, the range of <code>memory</code> being bound <strong class=\"purple\">must</strong> not overlap with those bound ranges"
   19624         },
   19625         {
   19626           "vuid": "VUID-VkSparseImageMemoryBind-memory-01105",
   19627           "text": " <code>memory</code> and <code>memoryOffset</code> <strong class=\"purple\">must</strong> match the memory requirements of the calling command&#8217;s <code>image</code>, as described in section <a href=\"#resources-association\">Resource Memory Association</a>"
   19628         },
   19629         {
   19630           "vuid": "VUID-VkSparseImageMemoryBind-subresource-01106",
   19631           "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid image subresource for <code>image</code> (see <a href=\"#resources-image-views\">Image Views</a>)"
   19632         },
   19633         {
   19634           "vuid": "VUID-VkSparseImageMemoryBind-offset-01107",
   19635           "text": " <code>offset.x</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block width (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.width</code>) of the image"
   19636         },
   19637         {
   19638           "vuid": "VUID-VkSparseImageMemoryBind-extent-01108",
   19639           "text": " <code>extent.width</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block width of the image, or else <span class=\"eq\">(<code>extent.width</code> &#43; <code>offset.x</code>)</span> <strong class=\"purple\">must</strong> equal the width of the image subresource"
   19640         },
   19641         {
   19642           "vuid": "VUID-VkSparseImageMemoryBind-offset-01109",
   19643           "text": " <code>offset.y</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block height (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.height</code>) of the image"
   19644         },
   19645         {
   19646           "vuid": "VUID-VkSparseImageMemoryBind-extent-01110",
   19647           "text": " <code>extent.height</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block height of the image, or else <span class=\"eq\">(<code>extent.height</code> &#43; <code>offset.y</code>)</span> <strong class=\"purple\">must</strong> equal the height of the image subresource"
   19648         },
   19649         {
   19650           "vuid": "VUID-VkSparseImageMemoryBind-offset-01111",
   19651           "text": " <code>offset.z</code> <strong class=\"purple\">must</strong> be a multiple of the sparse image block depth (<code>VkSparseImageFormatProperties</code>::<code>imageGranularity.depth</code>) of the image"
   19652         },
   19653         {
   19654           "vuid": "VUID-VkSparseImageMemoryBind-extent-01112",
   19655           "text": " <code>extent.depth</code> <strong class=\"purple\">must</strong> either be a multiple of the sparse image block depth of the image, or else <span class=\"eq\">(<code>extent.depth</code> &#43; <code>offset.z</code>)</span> <strong class=\"purple\">must</strong> equal the depth of the image subresource"
   19656         },
   19657         {
   19658           "vuid": "VUID-VkSparseImageMemoryBind-subresource-parameter",
   19659           "text": " <code>subresource</code> <strong class=\"purple\">must</strong> be a valid <code>VkImageSubresource</code> structure"
   19660         },
   19661         {
   19662           "vuid": "VUID-VkSparseImageMemoryBind-memory-parameter",
   19663           "text": " If <code>memory</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>memory</code> <strong class=\"purple\">must</strong> be a valid <code>VkDeviceMemory</code> handle"
   19664         },
   19665         {
   19666           "vuid": "VUID-VkSparseImageMemoryBind-flags-parameter",
   19667           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSparseMemoryBindFlagBits\">VkSparseMemoryBindFlagBits</a> values"
   19668         }
   19669       ]
   19670     },
   19671     "vkQueueBindSparse": {
   19672       "core": [
   19673         {
   19674           "vuid": "VUID-vkQueueBindSparse-fence-01113",
   19675           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be unsignaled"
   19676         },
   19677         {
   19678           "vuid": "VUID-vkQueueBindSparse-fence-01114",
   19679           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
   19680         },
   19681         {
   19682           "vuid": "VUID-vkQueueBindSparse-pSignalSemaphores-01115",
   19683           "text": " Each element of the <code>pSignalSemaphores</code> member of each element of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be unsignaled when the semaphore signal operation it defines is executed on the device"
   19684         },
   19685         {
   19686           "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01116",
   19687           "text": " When a semaphore unsignal operation defined by any element of the <code>pWaitSemaphores</code> member of any element of <code>pBindInfo</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
   19688         },
   19689         {
   19690           "vuid": "VUID-vkQueueBindSparse-pWaitSemaphores-01117",
   19691           "text": " All elements of the <code>pWaitSemaphores</code> member of all elements of <code>pBindInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution."
   19692         },
   19693         {
   19694           "vuid": "VUID-vkQueueBindSparse-queue-parameter",
   19695           "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
   19696         },
   19697         {
   19698           "vuid": "VUID-vkQueueBindSparse-pBindInfo-parameter",
   19699           "text": " If <code>bindInfoCount</code> is not <code>0</code>, <code>pBindInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bindInfoCount</code> valid <code>VkBindSparseInfo</code> structures"
   19700         },
   19701         {
   19702           "vuid": "VUID-vkQueueBindSparse-fence-parameter",
   19703           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   19704         },
   19705         {
   19706           "vuid": "VUID-vkQueueBindSparse-queuetype",
   19707           "text": " The <code>queue</code> <strong class=\"purple\">must</strong> support sparse binding operations"
   19708         },
   19709         {
   19710           "vuid": "VUID-vkQueueBindSparse-commonparent",
   19711           "text": " Both of <code>fence</code>, and <code>queue</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   19712         }
   19713       ]
   19714     },
   19715     "VkBindSparseInfo": {
   19716       "core": [
   19717         {
   19718           "vuid": "VUID-VkBindSparseInfo-sType-sType",
   19719           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_BIND_SPARSE_INFO</code>"
   19720         },
   19721         {
   19722           "vuid": "VUID-VkBindSparseInfo-pNext-pNext",
   19723           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupBindSparseInfo\">VkDeviceGroupBindSparseInfo</a>"
   19724         },
   19725         {
   19726           "vuid": "VUID-VkBindSparseInfo-pWaitSemaphores-parameter",
   19727           "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
   19728         },
   19729         {
   19730           "vuid": "VUID-VkBindSparseInfo-pBufferBinds-parameter",
   19731           "text": " If <code>bufferBindCount</code> is not <code>0</code>, <code>pBufferBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>bufferBindCount</code> valid <code>VkSparseBufferMemoryBindInfo</code> structures"
   19732         },
   19733         {
   19734           "vuid": "VUID-VkBindSparseInfo-pImageOpaqueBinds-parameter",
   19735           "text": " If <code>imageOpaqueBindCount</code> is not <code>0</code>, <code>pImageOpaqueBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageOpaqueBindCount</code> valid <code>VkSparseImageOpaqueMemoryBindInfo</code> structures"
   19736         },
   19737         {
   19738           "vuid": "VUID-VkBindSparseInfo-pImageBinds-parameter",
   19739           "text": " If <code>imageBindCount</code> is not <code>0</code>, <code>pImageBinds</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>imageBindCount</code> valid <code>VkSparseImageMemoryBindInfo</code> structures"
   19740         },
   19741         {
   19742           "vuid": "VUID-VkBindSparseInfo-pSignalSemaphores-parameter",
   19743           "text": " If <code>signalSemaphoreCount</code> is not <code>0</code>, <code>pSignalSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>signalSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
   19744         },
   19745         {
   19746           "vuid": "VUID-VkBindSparseInfo-commonparent",
   19747           "text": " Both of the elements of <code>pSignalSemaphores</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   19748         }
   19749       ]
   19750     },
   19751     "VkDeviceGroupBindSparseInfo": {
   19752       "(VK_VERSION_1_1,VK_KHR_device_group)": [
   19753         {
   19754           "vuid": "VUID-VkDeviceGroupBindSparseInfo-resourceDeviceIndex-01118",
   19755           "text": " <code>resourceDeviceIndex</code> and <code>memoryDeviceIndex</code> <strong class=\"purple\">must</strong> both be valid device indices."
   19756         },
   19757         {
   19758           "vuid": "VUID-VkDeviceGroupBindSparseInfo-memoryDeviceIndex-01119",
   19759           "text": " Each memory allocation bound in this batch <strong class=\"purple\">must</strong> have allocated an instance for <code>memoryDeviceIndex</code>."
   19760         },
   19761         {
   19762           "vuid": "VUID-VkDeviceGroupBindSparseInfo-sType-sType",
   19763           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO</code>"
   19764         }
   19765       ]
   19766     },
   19767     "vkCreateAndroidSurfaceKHR": {
   19768       "(VK_KHR_surface)+(VK_KHR_android_surface)": [
   19769         {
   19770           "vuid": "VUID-vkCreateAndroidSurfaceKHR-instance-parameter",
   19771           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   19772         },
   19773         {
   19774           "vuid": "VUID-vkCreateAndroidSurfaceKHR-pCreateInfo-parameter",
   19775           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAndroidSurfaceCreateInfoKHR</code> structure"
   19776         },
   19777         {
   19778           "vuid": "VUID-vkCreateAndroidSurfaceKHR-pAllocator-parameter",
   19779           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   19780         },
   19781         {
   19782           "vuid": "VUID-vkCreateAndroidSurfaceKHR-pSurface-parameter",
   19783           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   19784         }
   19785       ]
   19786     },
   19787     "VkAndroidSurfaceCreateInfoKHR": {
   19788       "(VK_KHR_surface)+(VK_KHR_android_surface)": [
   19789         {
   19790           "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-window-01248",
   19791           "text": " <code>window</code> <strong class=\"purple\">must</strong> point to a valid Android <a href=\"#ANativeWindow\">ANativeWindow</a>."
   19792         },
   19793         {
   19794           "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-sType-sType",
   19795           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR</code>"
   19796         },
   19797         {
   19798           "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-pNext-pNext",
   19799           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19800         },
   19801         {
   19802           "vuid": "VUID-VkAndroidSurfaceCreateInfoKHR-flags-zerobitmask",
   19803           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   19804         }
   19805       ]
   19806     },
   19807     "vkCreateWaylandSurfaceKHR": {
   19808       "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
   19809         {
   19810           "vuid": "VUID-vkCreateWaylandSurfaceKHR-instance-parameter",
   19811           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   19812         },
   19813         {
   19814           "vuid": "VUID-vkCreateWaylandSurfaceKHR-pCreateInfo-parameter",
   19815           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWaylandSurfaceCreateInfoKHR</code> structure"
   19816         },
   19817         {
   19818           "vuid": "VUID-vkCreateWaylandSurfaceKHR-pAllocator-parameter",
   19819           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   19820         },
   19821         {
   19822           "vuid": "VUID-vkCreateWaylandSurfaceKHR-pSurface-parameter",
   19823           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   19824         }
   19825       ]
   19826     },
   19827     "VkWaylandSurfaceCreateInfoKHR": {
   19828       "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
   19829         {
   19830           "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-display-01304",
   19831           "text": " <code>display</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_display</code>."
   19832         },
   19833         {
   19834           "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-surface-01305",
   19835           "text": " <code>surface</code> <strong class=\"purple\">must</strong> point to a valid Wayland <code>wl_surface</code>."
   19836         },
   19837         {
   19838           "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-sType-sType",
   19839           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR</code>"
   19840         },
   19841         {
   19842           "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-pNext-pNext",
   19843           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19844         },
   19845         {
   19846           "vuid": "VUID-VkWaylandSurfaceCreateInfoKHR-flags-zerobitmask",
   19847           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   19848         }
   19849       ]
   19850     },
   19851     "vkCreateWin32SurfaceKHR": {
   19852       "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
   19853         {
   19854           "vuid": "VUID-vkCreateWin32SurfaceKHR-instance-parameter",
   19855           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   19856         },
   19857         {
   19858           "vuid": "VUID-vkCreateWin32SurfaceKHR-pCreateInfo-parameter",
   19859           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkWin32SurfaceCreateInfoKHR</code> structure"
   19860         },
   19861         {
   19862           "vuid": "VUID-vkCreateWin32SurfaceKHR-pAllocator-parameter",
   19863           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   19864         },
   19865         {
   19866           "vuid": "VUID-vkCreateWin32SurfaceKHR-pSurface-parameter",
   19867           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   19868         }
   19869       ]
   19870     },
   19871     "VkWin32SurfaceCreateInfoKHR": {
   19872       "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
   19873         {
   19874           "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hinstance-01307",
   19875           "text": " <code>hinstance</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HINSTANCE</code>."
   19876         },
   19877         {
   19878           "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-hwnd-01308",
   19879           "text": " <code>hwnd</code> <strong class=\"purple\">must</strong> be a valid Win32 <code>HWND</code>."
   19880         },
   19881         {
   19882           "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-sType-sType",
   19883           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR</code>"
   19884         },
   19885         {
   19886           "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-pNext-pNext",
   19887           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19888         },
   19889         {
   19890           "vuid": "VUID-VkWin32SurfaceCreateInfoKHR-flags-zerobitmask",
   19891           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   19892         }
   19893       ]
   19894     },
   19895     "vkCreateXcbSurfaceKHR": {
   19896       "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
   19897         {
   19898           "vuid": "VUID-vkCreateXcbSurfaceKHR-instance-parameter",
   19899           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   19900         },
   19901         {
   19902           "vuid": "VUID-vkCreateXcbSurfaceKHR-pCreateInfo-parameter",
   19903           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXcbSurfaceCreateInfoKHR</code> structure"
   19904         },
   19905         {
   19906           "vuid": "VUID-vkCreateXcbSurfaceKHR-pAllocator-parameter",
   19907           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   19908         },
   19909         {
   19910           "vuid": "VUID-vkCreateXcbSurfaceKHR-pSurface-parameter",
   19911           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   19912         }
   19913       ]
   19914     },
   19915     "VkXcbSurfaceCreateInfoKHR": {
   19916       "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
   19917         {
   19918           "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-connection-01310",
   19919           "text": " <code>connection</code> <strong class=\"purple\">must</strong> point to a valid X11 <code>xcb_connection_t</code>."
   19920         },
   19921         {
   19922           "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-window-01311",
   19923           "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid X11 <code>xcb_window_t</code>."
   19924         },
   19925         {
   19926           "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-sType-sType",
   19927           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR</code>"
   19928         },
   19929         {
   19930           "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-pNext-pNext",
   19931           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19932         },
   19933         {
   19934           "vuid": "VUID-VkXcbSurfaceCreateInfoKHR-flags-zerobitmask",
   19935           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   19936         }
   19937       ]
   19938     },
   19939     "vkCreateXlibSurfaceKHR": {
   19940       "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
   19941         {
   19942           "vuid": "VUID-vkCreateXlibSurfaceKHR-instance-parameter",
   19943           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   19944         },
   19945         {
   19946           "vuid": "VUID-vkCreateXlibSurfaceKHR-pCreateInfo-parameter",
   19947           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkXlibSurfaceCreateInfoKHR</code> structure"
   19948         },
   19949         {
   19950           "vuid": "VUID-vkCreateXlibSurfaceKHR-pAllocator-parameter",
   19951           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   19952         },
   19953         {
   19954           "vuid": "VUID-vkCreateXlibSurfaceKHR-pSurface-parameter",
   19955           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   19956         }
   19957       ]
   19958     },
   19959     "VkXlibSurfaceCreateInfoKHR": {
   19960       "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
   19961         {
   19962           "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-dpy-01313",
   19963           "text": " <code>dpy</code> <strong class=\"purple\">must</strong> point to a valid Xlib <code>Display</code>."
   19964         },
   19965         {
   19966           "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-window-01314",
   19967           "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid Xlib <code>Window</code>."
   19968         },
   19969         {
   19970           "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-sType-sType",
   19971           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR</code>"
   19972         },
   19973         {
   19974           "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-pNext-pNext",
   19975           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   19976         },
   19977         {
   19978           "vuid": "VUID-VkXlibSurfaceCreateInfoKHR-flags-zerobitmask",
   19979           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   19980         }
   19981       ]
   19982     },
   19983     "vkCreateImagePipeSurfaceFUCHSIA": {
   19984       "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
   19985         {
   19986           "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-instance-parameter",
   19987           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   19988         },
   19989         {
   19990           "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pCreateInfo-parameter",
   19991           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkImagePipeSurfaceCreateInfoFUCHSIA</code> structure"
   19992         },
   19993         {
   19994           "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pAllocator-parameter",
   19995           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   19996         },
   19997         {
   19998           "vuid": "VUID-vkCreateImagePipeSurfaceFUCHSIA-pSurface-parameter",
   19999           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   20000         }
   20001       ]
   20002     },
   20003     "VkImagePipeSurfaceCreateInfoFUCHSIA": {
   20004       "(VK_KHR_surface)+(VK_FUCHSIA_imagepipe_surface)": [
   20005         {
   20006           "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-imagePipeHandle-00000",
   20007           "text": " <code>imagePipeHandle</code> <strong class=\"purple\">must</strong> be a valid <code>zx_handle_t</code>"
   20008         },
   20009         {
   20010           "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-sType-sType",
   20011           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA</code>"
   20012         },
   20013         {
   20014           "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-pNext-pNext",
   20015           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20016         },
   20017         {
   20018           "vuid": "VUID-VkImagePipeSurfaceCreateInfoFUCHSIA-flags-zerobitmask",
   20019           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   20020         }
   20021       ]
   20022     },
   20023     "vkCreateIOSSurfaceMVK": {
   20024       "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
   20025         {
   20026           "vuid": "VUID-vkCreateIOSSurfaceMVK-instance-parameter",
   20027           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   20028         },
   20029         {
   20030           "vuid": "VUID-vkCreateIOSSurfaceMVK-pCreateInfo-parameter",
   20031           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkIOSSurfaceCreateInfoMVK</code> structure"
   20032         },
   20033         {
   20034           "vuid": "VUID-vkCreateIOSSurfaceMVK-pAllocator-parameter",
   20035           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   20036         },
   20037         {
   20038           "vuid": "VUID-vkCreateIOSSurfaceMVK-pSurface-parameter",
   20039           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   20040         }
   20041       ]
   20042     },
   20043     "VkIOSSurfaceCreateInfoMVK": {
   20044       "(VK_KHR_surface)+(VK_MVK_ios_surface)": [
   20045         {
   20046           "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pView-01316",
   20047           "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>UIView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>."
   20048         },
   20049         {
   20050           "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-sType-sType",
   20051           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK</code>"
   20052         },
   20053         {
   20054           "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-pNext-pNext",
   20055           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20056         },
   20057         {
   20058           "vuid": "VUID-VkIOSSurfaceCreateInfoMVK-flags-zerobitmask",
   20059           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   20060         }
   20061       ]
   20062     },
   20063     "vkCreateMacOSSurfaceMVK": {
   20064       "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
   20065         {
   20066           "vuid": "VUID-vkCreateMacOSSurfaceMVK-instance-parameter",
   20067           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   20068         },
   20069         {
   20070           "vuid": "VUID-vkCreateMacOSSurfaceMVK-pCreateInfo-parameter",
   20071           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMacOSSurfaceCreateInfoMVK</code> structure"
   20072         },
   20073         {
   20074           "vuid": "VUID-vkCreateMacOSSurfaceMVK-pAllocator-parameter",
   20075           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   20076         },
   20077         {
   20078           "vuid": "VUID-vkCreateMacOSSurfaceMVK-pSurface-parameter",
   20079           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   20080         }
   20081       ]
   20082     },
   20083     "VkMacOSSurfaceCreateInfoMVK": {
   20084       "(VK_KHR_surface)+(VK_MVK_macos_surface)": [
   20085         {
   20086           "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pView-01317",
   20087           "text": " <code>pView</code> <strong class=\"purple\">must</strong> be a valid <code>NSView</code> and <strong class=\"purple\">must</strong> be backed by a <code>CALayer</code> instance of type <a href=\"#CAMetalLayer\">CAMetalLayer</a>."
   20088         },
   20089         {
   20090           "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-sType-sType",
   20091           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK</code>"
   20092         },
   20093         {
   20094           "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-pNext-pNext",
   20095           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20096         },
   20097         {
   20098           "vuid": "VUID-VkMacOSSurfaceCreateInfoMVK-flags-zerobitmask",
   20099           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   20100         }
   20101       ]
   20102     },
   20103     "vkCreateViSurfaceNN": {
   20104       "(VK_KHR_surface)+(VK_NN_vi_surface)": [
   20105         {
   20106           "vuid": "VUID-vkCreateViSurfaceNN-instance-parameter",
   20107           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   20108         },
   20109         {
   20110           "vuid": "VUID-vkCreateViSurfaceNN-pCreateInfo-parameter",
   20111           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkViSurfaceCreateInfoNN</code> structure"
   20112         },
   20113         {
   20114           "vuid": "VUID-vkCreateViSurfaceNN-pAllocator-parameter",
   20115           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   20116         },
   20117         {
   20118           "vuid": "VUID-vkCreateViSurfaceNN-pSurface-parameter",
   20119           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   20120         }
   20121       ]
   20122     },
   20123     "VkViSurfaceCreateInfoNN": {
   20124       "(VK_KHR_surface)+(VK_NN_vi_surface)": [
   20125         {
   20126           "vuid": "VUID-VkViSurfaceCreateInfoNN-window-01318",
   20127           "text": " <code>window</code> <strong class=\"purple\">must</strong> be a valid <code>nn</code>::<code>vi</code>::<code>NativeWindowHandle</code>"
   20128         },
   20129         {
   20130           "vuid": "VUID-VkViSurfaceCreateInfoNN-sType-sType",
   20131           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN</code>"
   20132         },
   20133         {
   20134           "vuid": "VUID-VkViSurfaceCreateInfoNN-pNext-pNext",
   20135           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20136         },
   20137         {
   20138           "vuid": "VUID-VkViSurfaceCreateInfoNN-flags-zerobitmask",
   20139           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   20140         }
   20141       ]
   20142     },
   20143     "vkCreateMetalSurfaceEXT": {
   20144       "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
   20145         {
   20146           "vuid": "VUID-vkCreateMetalSurfaceEXT-instance-parameter",
   20147           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   20148         },
   20149         {
   20150           "vuid": "VUID-vkCreateMetalSurfaceEXT-pCreateInfo-parameter",
   20151           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkMetalSurfaceCreateInfoEXT</code> structure"
   20152         },
   20153         {
   20154           "vuid": "VUID-vkCreateMetalSurfaceEXT-pAllocator-parameter",
   20155           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   20156         },
   20157         {
   20158           "vuid": "VUID-vkCreateMetalSurfaceEXT-pSurface-parameter",
   20159           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   20160         }
   20161       ]
   20162     },
   20163     "VkMetalSurfaceCreateInfoEXT": {
   20164       "(VK_KHR_surface)+(VK_EXT_metal_surface)": [
   20165         {
   20166           "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-sType-sType",
   20167           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT</code>"
   20168         },
   20169         {
   20170           "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-pNext-pNext",
   20171           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20172         },
   20173         {
   20174           "vuid": "VUID-VkMetalSurfaceCreateInfoEXT-flags-zerobitmask",
   20175           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   20176         }
   20177       ]
   20178     },
   20179     "vkDestroySurfaceKHR": {
   20180       "(VK_KHR_surface)": [
   20181         {
   20182           "vuid": "VUID-vkDestroySurfaceKHR-surface-01266",
   20183           "text": " All <code>VkSwapchainKHR</code> objects created for <code>surface</code> <strong class=\"purple\">must</strong> have been destroyed prior to destroying <code>surface</code>"
   20184         },
   20185         {
   20186           "vuid": "VUID-vkDestroySurfaceKHR-surface-01267",
   20187           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   20188         },
   20189         {
   20190           "vuid": "VUID-vkDestroySurfaceKHR-surface-01268",
   20191           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>surface</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20192         },
   20193         {
   20194           "vuid": "VUID-vkDestroySurfaceKHR-instance-parameter",
   20195           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   20196         },
   20197         {
   20198           "vuid": "VUID-vkDestroySurfaceKHR-surface-parameter",
   20199           "text": " If <code>surface</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20200         },
   20201         {
   20202           "vuid": "VUID-vkDestroySurfaceKHR-pAllocator-parameter",
   20203           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   20204         },
   20205         {
   20206           "vuid": "VUID-vkDestroySurfaceKHR-surface-parent",
   20207           "text": " If <code>surface</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
   20208         }
   20209       ]
   20210     },
   20211     "vkGetPhysicalDeviceDisplayPropertiesKHR": {
   20212       "(VK_KHR_surface)+(VK_KHR_display)": [
   20213         {
   20214           "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-physicalDevice-parameter",
   20215           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20216         },
   20217         {
   20218           "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pPropertyCount-parameter",
   20219           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20220         },
   20221         {
   20222           "vuid": "VUID-vkGetPhysicalDeviceDisplayPropertiesKHR-pProperties-parameter",
   20223           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPropertiesKHR</code> structures"
   20224         }
   20225       ]
   20226     },
   20227     "vkGetPhysicalDeviceDisplayProperties2KHR": {
   20228       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20229         {
   20230           "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-physicalDevice-parameter",
   20231           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20232         },
   20233         {
   20234           "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pPropertyCount-parameter",
   20235           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20236         },
   20237         {
   20238           "vuid": "VUID-vkGetPhysicalDeviceDisplayProperties2KHR-pProperties-parameter",
   20239           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayProperties2KHR</code> structures"
   20240         }
   20241       ]
   20242     },
   20243     "VkDisplayProperties2KHR": {
   20244       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20245         {
   20246           "vuid": "VUID-VkDisplayProperties2KHR-sType-sType",
   20247           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR</code>"
   20248         },
   20249         {
   20250           "vuid": "VUID-VkDisplayProperties2KHR-pNext-pNext",
   20251           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20252         }
   20253       ]
   20254     },
   20255     "vkAcquireXlibDisplayEXT": {
   20256       "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
   20257         {
   20258           "vuid": "VUID-vkAcquireXlibDisplayEXT-physicalDevice-parameter",
   20259           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20260         },
   20261         {
   20262           "vuid": "VUID-vkAcquireXlibDisplayEXT-dpy-parameter",
   20263           "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
   20264         },
   20265         {
   20266           "vuid": "VUID-vkAcquireXlibDisplayEXT-display-parameter",
   20267           "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
   20268         }
   20269       ]
   20270     },
   20271     "vkGetRandROutputDisplayEXT": {
   20272       "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)+(VK_EXT_acquire_xlib_display)": [
   20273         {
   20274           "vuid": "VUID-vkGetRandROutputDisplayEXT-physicalDevice-parameter",
   20275           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20276         },
   20277         {
   20278           "vuid": "VUID-vkGetRandROutputDisplayEXT-dpy-parameter",
   20279           "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
   20280         },
   20281         {
   20282           "vuid": "VUID-vkGetRandROutputDisplayEXT-pDisplay-parameter",
   20283           "text": " <code>pDisplay</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayKHR</code> handle"
   20284         }
   20285       ]
   20286     },
   20287     "vkReleaseDisplayEXT": {
   20288       "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_direct_mode_display)": [
   20289         {
   20290           "vuid": "VUID-vkReleaseDisplayEXT-physicalDevice-parameter",
   20291           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20292         },
   20293         {
   20294           "vuid": "VUID-vkReleaseDisplayEXT-display-parameter",
   20295           "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
   20296         }
   20297       ]
   20298     },
   20299     "vkGetPhysicalDeviceDisplayPlanePropertiesKHR": {
   20300       "(VK_KHR_surface)+(VK_KHR_display)": [
   20301         {
   20302           "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-physicalDevice-parameter",
   20303           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20304         },
   20305         {
   20306           "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pPropertyCount-parameter",
   20307           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20308         },
   20309         {
   20310           "vuid": "VUID-vkGetPhysicalDeviceDisplayPlanePropertiesKHR-pProperties-parameter",
   20311           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPlanePropertiesKHR</code> structures"
   20312         }
   20313       ]
   20314     },
   20315     "vkGetPhysicalDeviceDisplayPlaneProperties2KHR": {
   20316       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20317         {
   20318           "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-physicalDevice-parameter",
   20319           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20320         },
   20321         {
   20322           "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pPropertyCount-parameter",
   20323           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20324         },
   20325         {
   20326           "vuid": "VUID-vkGetPhysicalDeviceDisplayPlaneProperties2KHR-pProperties-parameter",
   20327           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayPlaneProperties2KHR</code> structures"
   20328         }
   20329       ]
   20330     },
   20331     "VkDisplayPlaneProperties2KHR": {
   20332       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20333         {
   20334           "vuid": "VUID-VkDisplayPlaneProperties2KHR-sType-sType",
   20335           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR</code>"
   20336         },
   20337         {
   20338           "vuid": "VUID-VkDisplayPlaneProperties2KHR-pNext-pNext",
   20339           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20340         }
   20341       ]
   20342     },
   20343     "vkGetDisplayPlaneSupportedDisplaysKHR": {
   20344       "(VK_KHR_surface)+(VK_KHR_display)": [
   20345         {
   20346           "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-planeIndex-01249",
   20347           "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>"
   20348         },
   20349         {
   20350           "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-physicalDevice-parameter",
   20351           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20352         },
   20353         {
   20354           "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplayCount-parameter",
   20355           "text": " <code>pDisplayCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20356         },
   20357         {
   20358           "vuid": "VUID-vkGetDisplayPlaneSupportedDisplaysKHR-pDisplays-parameter",
   20359           "text": " If the value referenced by <code>pDisplayCount</code> is not <code>0</code>, and <code>pDisplays</code> is not <code>NULL</code>, <code>pDisplays</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pDisplayCount</code> <code>VkDisplayKHR</code> handles"
   20360         }
   20361       ]
   20362     },
   20363     "vkGetDisplayModePropertiesKHR": {
   20364       "(VK_KHR_surface)+(VK_KHR_display)": [
   20365         {
   20366           "vuid": "VUID-vkGetDisplayModePropertiesKHR-physicalDevice-parameter",
   20367           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20368         },
   20369         {
   20370           "vuid": "VUID-vkGetDisplayModePropertiesKHR-display-parameter",
   20371           "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
   20372         },
   20373         {
   20374           "vuid": "VUID-vkGetDisplayModePropertiesKHR-pPropertyCount-parameter",
   20375           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20376         },
   20377         {
   20378           "vuid": "VUID-vkGetDisplayModePropertiesKHR-pProperties-parameter",
   20379           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayModePropertiesKHR</code> structures"
   20380         }
   20381       ]
   20382     },
   20383     "vkGetDisplayModeProperties2KHR": {
   20384       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20385         {
   20386           "vuid": "VUID-vkGetDisplayModeProperties2KHR-physicalDevice-parameter",
   20387           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20388         },
   20389         {
   20390           "vuid": "VUID-vkGetDisplayModeProperties2KHR-display-parameter",
   20391           "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
   20392         },
   20393         {
   20394           "vuid": "VUID-vkGetDisplayModeProperties2KHR-pPropertyCount-parameter",
   20395           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20396         },
   20397         {
   20398           "vuid": "VUID-vkGetDisplayModeProperties2KHR-pProperties-parameter",
   20399           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkDisplayModeProperties2KHR</code> structures"
   20400         }
   20401       ]
   20402     },
   20403     "VkDisplayModeProperties2KHR": {
   20404       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20405         {
   20406           "vuid": "VUID-VkDisplayModeProperties2KHR-sType-sType",
   20407           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR</code>"
   20408         },
   20409         {
   20410           "vuid": "VUID-VkDisplayModeProperties2KHR-pNext-pNext",
   20411           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20412         }
   20413       ]
   20414     },
   20415     "VkDisplayModeParametersKHR": {
   20416       "(VK_KHR_surface)+(VK_KHR_display)": [
   20417         {
   20418           "vuid": "VUID-VkDisplayModeParametersKHR-width-01990",
   20419           "text": " The <code>width</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   20420         },
   20421         {
   20422           "vuid": "VUID-VkDisplayModeParametersKHR-height-01991",
   20423           "text": " The <code>height</code> member of <code>visibleRegion</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   20424         },
   20425         {
   20426           "vuid": "VUID-VkDisplayModeParametersKHR-refreshRate-01992",
   20427           "text": " <code>refreshRate</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   20428         }
   20429       ]
   20430     },
   20431     "vkCreateDisplayModeKHR": {
   20432       "(VK_KHR_surface)+(VK_KHR_display)": [
   20433         {
   20434           "vuid": "VUID-vkCreateDisplayModeKHR-physicalDevice-parameter",
   20435           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20436         },
   20437         {
   20438           "vuid": "VUID-vkCreateDisplayModeKHR-display-parameter",
   20439           "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
   20440         },
   20441         {
   20442           "vuid": "VUID-vkCreateDisplayModeKHR-pCreateInfo-parameter",
   20443           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayModeCreateInfoKHR</code> structure"
   20444         },
   20445         {
   20446           "vuid": "VUID-vkCreateDisplayModeKHR-pAllocator-parameter",
   20447           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   20448         },
   20449         {
   20450           "vuid": "VUID-vkCreateDisplayModeKHR-pMode-parameter",
   20451           "text": " <code>pMode</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayModeKHR</code> handle"
   20452         }
   20453       ]
   20454     },
   20455     "VkDisplayModeCreateInfoKHR": {
   20456       "(VK_KHR_surface)+(VK_KHR_display)": [
   20457         {
   20458           "vuid": "VUID-VkDisplayModeCreateInfoKHR-sType-sType",
   20459           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR</code>"
   20460         },
   20461         {
   20462           "vuid": "VUID-VkDisplayModeCreateInfoKHR-pNext-pNext",
   20463           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20464         },
   20465         {
   20466           "vuid": "VUID-VkDisplayModeCreateInfoKHR-flags-zerobitmask",
   20467           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   20468         },
   20469         {
   20470           "vuid": "VUID-VkDisplayModeCreateInfoKHR-parameters-parameter",
   20471           "text": " <code>parameters</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeParametersKHR</code> structure"
   20472         }
   20473       ]
   20474     },
   20475     "vkGetDisplayPlaneCapabilitiesKHR": {
   20476       "(VK_KHR_surface)+(VK_KHR_display)": [
   20477         {
   20478           "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-physicalDevice-parameter",
   20479           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20480         },
   20481         {
   20482           "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-mode-parameter",
   20483           "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
   20484         },
   20485         {
   20486           "vuid": "VUID-vkGetDisplayPlaneCapabilitiesKHR-pCapabilities-parameter",
   20487           "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilitiesKHR</code> structure"
   20488         }
   20489       ]
   20490     },
   20491     "vkGetDisplayPlaneCapabilities2KHR": {
   20492       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20493         {
   20494           "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-physicalDevice-parameter",
   20495           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20496         },
   20497         {
   20498           "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pDisplayPlaneInfo-parameter",
   20499           "text": " <code>pDisplayPlaneInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPlaneInfo2KHR</code> structure"
   20500         },
   20501         {
   20502           "vuid": "VUID-vkGetDisplayPlaneCapabilities2KHR-pCapabilities-parameter",
   20503           "text": " <code>pCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDisplayPlaneCapabilities2KHR</code> structure"
   20504         }
   20505       ]
   20506     },
   20507     "VkDisplayPlaneInfo2KHR": {
   20508       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20509         {
   20510           "vuid": "VUID-VkDisplayPlaneInfo2KHR-sType-sType",
   20511           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR</code>"
   20512         },
   20513         {
   20514           "vuid": "VUID-VkDisplayPlaneInfo2KHR-pNext-pNext",
   20515           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20516         },
   20517         {
   20518           "vuid": "VUID-VkDisplayPlaneInfo2KHR-mode-parameter",
   20519           "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
   20520         }
   20521       ]
   20522     },
   20523     "VkDisplayPlaneCapabilities2KHR": {
   20524       "(VK_KHR_surface)+(VK_KHR_display)+(VK_KHR_get_display_properties2)": [
   20525         {
   20526           "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-sType-sType",
   20527           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR</code>"
   20528         },
   20529         {
   20530           "vuid": "VUID-VkDisplayPlaneCapabilities2KHR-pNext-pNext",
   20531           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20532         }
   20533       ]
   20534     },
   20535     "vkDisplayPowerControlEXT": {
   20536       "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
   20537         {
   20538           "vuid": "VUID-vkDisplayPowerControlEXT-device-parameter",
   20539           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   20540         },
   20541         {
   20542           "vuid": "VUID-vkDisplayPowerControlEXT-display-parameter",
   20543           "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayKHR</code> handle"
   20544         },
   20545         {
   20546           "vuid": "VUID-vkDisplayPowerControlEXT-pDisplayPowerInfo-parameter",
   20547           "text": " <code>pDisplayPowerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplayPowerInfoEXT</code> structure"
   20548         }
   20549       ]
   20550     },
   20551     "VkDisplayPowerInfoEXT": {
   20552       "(VK_KHR_surface)+(VK_KHR_display)+(VK_EXT_display_control)": [
   20553         {
   20554           "vuid": "VUID-VkDisplayPowerInfoEXT-sType-sType",
   20555           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT</code>"
   20556         },
   20557         {
   20558           "vuid": "VUID-VkDisplayPowerInfoEXT-pNext-pNext",
   20559           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20560         },
   20561         {
   20562           "vuid": "VUID-VkDisplayPowerInfoEXT-powerState-parameter",
   20563           "text": " <code>powerState</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPowerStateEXT\">VkDisplayPowerStateEXT</a> value"
   20564         }
   20565       ]
   20566     },
   20567     "vkCreateDisplayPlaneSurfaceKHR": {
   20568       "(VK_KHR_surface)+(VK_KHR_display)": [
   20569         {
   20570           "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-instance-parameter",
   20571           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   20572         },
   20573         {
   20574           "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pCreateInfo-parameter",
   20575           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDisplaySurfaceCreateInfoKHR</code> structure"
   20576         },
   20577         {
   20578           "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pAllocator-parameter",
   20579           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   20580         },
   20581         {
   20582           "vuid": "VUID-vkCreateDisplayPlaneSurfaceKHR-pSurface-parameter",
   20583           "text": " <code>pSurface</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceKHR</code> handle"
   20584         }
   20585       ]
   20586     },
   20587     "VkDisplaySurfaceCreateInfoKHR": {
   20588       "(VK_KHR_surface)+(VK_KHR_display)": [
   20589         {
   20590           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeIndex-01252",
   20591           "text": " <code>planeIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>"
   20592         },
   20593         {
   20594           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-planeReorderPossible-01253",
   20595           "text": " If the <code>planeReorderPossible</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display corresponding to <code>displayMode</code> is <code>VK_TRUE</code> then <code>planeStackIndex</code> <strong class=\"purple\">must</strong> be less than the number of display planes supported by the device as determined by calling <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code>; otherwise <code>planeStackIndex</code> <strong class=\"purple\">must</strong> equal the <code>currentStackIndex</code> member of <code>VkDisplayPlanePropertiesKHR</code> returned by <code>vkGetPhysicalDeviceDisplayPlanePropertiesKHR</code> for the display plane corresponding to <code>displayMode</code>"
   20596         },
   20597         {
   20598           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01254",
   20599           "text": " If <code>alphaMode</code> is <code>VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR</code> then <code>globalAlpha</code> <strong class=\"purple\">must</strong> be between <code>0</code> and <code>1</code>, inclusive"
   20600         },
   20601         {
   20602           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-01255",
   20603           "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be <code>0</code> or one of the bits present in the <code>supportedAlpha</code> member of <code>VkDisplayPlaneCapabilitiesKHR</code> returned by <code>vkGetDisplayPlaneCapabilitiesKHR</code> for the display plane corresponding to <code>displayMode</code>"
   20604         },
   20605         {
   20606           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-width-01256",
   20607           "text": " The <code>width</code> and <code>height</code> members of <code>imageExtent</code> <strong class=\"purple\">must</strong> be less than the <code>maxImageDimensions2D</code> member of <code>VkPhysicalDeviceLimits</code>"
   20608         },
   20609         {
   20610           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-sType-sType",
   20611           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR</code>"
   20612         },
   20613         {
   20614           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-pNext-pNext",
   20615           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20616         },
   20617         {
   20618           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-flags-zerobitmask",
   20619           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   20620         },
   20621         {
   20622           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-displayMode-parameter",
   20623           "text": " <code>displayMode</code> <strong class=\"purple\">must</strong> be a valid <code>VkDisplayModeKHR</code> handle"
   20624         },
   20625         {
   20626           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-transform-parameter",
   20627           "text": " <code>transform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
   20628         },
   20629         {
   20630           "vuid": "VUID-VkDisplaySurfaceCreateInfoKHR-alphaMode-parameter",
   20631           "text": " <code>alphaMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDisplayPlaneAlphaFlagBitsKHR\">VkDisplayPlaneAlphaFlagBitsKHR</a> value"
   20632         }
   20633       ]
   20634     },
   20635     "vkGetPhysicalDeviceSurfaceSupportKHR": {
   20636       "(VK_KHR_surface)": [
   20637         {
   20638           "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-queueFamilyIndex-01269",
   20639           "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
   20640         },
   20641         {
   20642           "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-physicalDevice-parameter",
   20643           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20644         },
   20645         {
   20646           "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-surface-parameter",
   20647           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20648         },
   20649         {
   20650           "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-pSupported-parameter",
   20651           "text": " <code>pSupported</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkBool32</code> value"
   20652         },
   20653         {
   20654           "vuid": "VUID-vkGetPhysicalDeviceSurfaceSupportKHR-commonparent",
   20655           "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   20656         }
   20657       ]
   20658     },
   20659     "vkGetPhysicalDeviceWaylandPresentationSupportKHR": {
   20660       "(VK_KHR_surface)+(VK_KHR_wayland_surface)": [
   20661         {
   20662           "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-queueFamilyIndex-01306",
   20663           "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
   20664         },
   20665         {
   20666           "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-physicalDevice-parameter",
   20667           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20668         },
   20669         {
   20670           "vuid": "VUID-vkGetPhysicalDeviceWaylandPresentationSupportKHR-display-parameter",
   20671           "text": " <code>display</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>wl_display</code> value"
   20672         }
   20673       ]
   20674     },
   20675     "vkGetPhysicalDeviceWin32PresentationSupportKHR": {
   20676       "(VK_KHR_surface)+(VK_KHR_win32_surface)": [
   20677         {
   20678           "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-queueFamilyIndex-01309",
   20679           "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
   20680         },
   20681         {
   20682           "vuid": "VUID-vkGetPhysicalDeviceWin32PresentationSupportKHR-physicalDevice-parameter",
   20683           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20684         }
   20685       ]
   20686     },
   20687     "vkGetPhysicalDeviceXcbPresentationSupportKHR": {
   20688       "(VK_KHR_surface)+(VK_KHR_xcb_surface)": [
   20689         {
   20690           "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-queueFamilyIndex-01312",
   20691           "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
   20692         },
   20693         {
   20694           "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-physicalDevice-parameter",
   20695           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20696         },
   20697         {
   20698           "vuid": "VUID-vkGetPhysicalDeviceXcbPresentationSupportKHR-connection-parameter",
   20699           "text": " <code>connection</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>xcb_connection_t</code> value"
   20700         }
   20701       ]
   20702     },
   20703     "vkGetPhysicalDeviceXlibPresentationSupportKHR": {
   20704       "(VK_KHR_surface)+(VK_KHR_xlib_surface)": [
   20705         {
   20706           "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-queueFamilyIndex-01315",
   20707           "text": " <code>queueFamilyIndex</code> <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <code>vkGetPhysicalDeviceQueueFamilyProperties</code> for the given <code>physicalDevice</code>"
   20708         },
   20709         {
   20710           "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-physicalDevice-parameter",
   20711           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20712         },
   20713         {
   20714           "vuid": "VUID-vkGetPhysicalDeviceXlibPresentationSupportKHR-dpy-parameter",
   20715           "text": " <code>dpy</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>Display</code> value"
   20716         }
   20717       ]
   20718     },
   20719     "vkGetPhysicalDeviceSurfaceCapabilitiesKHR": {
   20720       "(VK_KHR_surface)": [
   20721         {
   20722           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-physicalDevice-parameter",
   20723           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20724         },
   20725         {
   20726           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-surface-parameter",
   20727           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20728         },
   20729         {
   20730           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-pSurfaceCapabilities-parameter",
   20731           "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilitiesKHR</code> structure"
   20732         },
   20733         {
   20734           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilitiesKHR-commonparent",
   20735           "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   20736         }
   20737       ]
   20738     },
   20739     "vkGetPhysicalDeviceSurfaceCapabilities2KHR": {
   20740       "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
   20741         {
   20742           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-physicalDevice-parameter",
   20743           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20744         },
   20745         {
   20746           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceInfo-parameter",
   20747           "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
   20748         },
   20749         {
   20750           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2KHR-pSurfaceCapabilities-parameter",
   20751           "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2KHR</code> structure"
   20752         }
   20753       ]
   20754     },
   20755     "VkPhysicalDeviceSurfaceInfo2KHR": {
   20756       "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
   20757         {
   20758           "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-sType-sType",
   20759           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR</code>"
   20760         },
   20761         {
   20762           "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-pNext-pNext",
   20763           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20764         },
   20765         {
   20766           "vuid": "VUID-VkPhysicalDeviceSurfaceInfo2KHR-surface-parameter",
   20767           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20768         }
   20769       ]
   20770     },
   20771     "VkSurfaceCapabilities2KHR": {
   20772       "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
   20773         {
   20774           "vuid": "VUID-VkSurfaceCapabilities2KHR-sType-sType",
   20775           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR</code>"
   20776         },
   20777         {
   20778           "vuid": "VUID-VkSurfaceCapabilities2KHR-pNext-pNext",
   20779           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a>"
   20780         }
   20781       ]
   20782     },
   20783     "VkSharedPresentSurfaceCapabilitiesKHR": {
   20784       "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)+(VK_KHR_shared_presentable_image)": [
   20785         {
   20786           "vuid": "VUID-VkSharedPresentSurfaceCapabilitiesKHR-sType-sType",
   20787           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR</code>"
   20788         }
   20789       ]
   20790     },
   20791     "vkGetPhysicalDeviceSurfaceCapabilities2EXT": {
   20792       "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
   20793         {
   20794           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-physicalDevice-parameter",
   20795           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20796         },
   20797         {
   20798           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-surface-parameter",
   20799           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20800         },
   20801         {
   20802           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-pSurfaceCapabilities-parameter",
   20803           "text": " <code>pSurfaceCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSurfaceCapabilities2EXT</code> structure"
   20804         },
   20805         {
   20806           "vuid": "VUID-vkGetPhysicalDeviceSurfaceCapabilities2EXT-commonparent",
   20807           "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   20808         }
   20809       ]
   20810     },
   20811     "VkSurfaceCapabilities2EXT": {
   20812       "(VK_KHR_surface)+(VK_EXT_display_surface_counter)": [
   20813         {
   20814           "vuid": "VUID-VkSurfaceCapabilities2EXT-supportedSurfaceCounters-01246",
   20815           "text": " <code>supportedSurfaceCounters</code> <strong class=\"purple\">must</strong> not include <code>VK_SURFACE_COUNTER_VBLANK_EXT</code> unless the surface queried is a <a href=\"#wsi-display-surfaces\">display surface</a>."
   20816         },
   20817         {
   20818           "vuid": "VUID-VkSurfaceCapabilities2EXT-sType-sType",
   20819           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT</code>"
   20820         },
   20821         {
   20822           "vuid": "VUID-VkSurfaceCapabilities2EXT-pNext-pNext",
   20823           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20824         }
   20825       ]
   20826     },
   20827     "vkGetPhysicalDeviceSurfaceFormatsKHR": {
   20828       "(VK_KHR_surface)": [
   20829         {
   20830           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-physicalDevice-parameter",
   20831           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20832         },
   20833         {
   20834           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-surface-parameter",
   20835           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20836         },
   20837         {
   20838           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormatCount-parameter",
   20839           "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20840         },
   20841         {
   20842           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-pSurfaceFormats-parameter",
   20843           "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormatKHR</code> structures"
   20844         },
   20845         {
   20846           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormatsKHR-commonparent",
   20847           "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   20848         }
   20849       ]
   20850     },
   20851     "vkGetPhysicalDeviceSurfaceFormats2KHR": {
   20852       "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
   20853         {
   20854           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-physicalDevice-parameter",
   20855           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20856         },
   20857         {
   20858           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceInfo-parameter",
   20859           "text": " <code>pSurfaceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceSurfaceInfo2KHR</code> structure"
   20860         },
   20861         {
   20862           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormatCount-parameter",
   20863           "text": " <code>pSurfaceFormatCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20864         },
   20865         {
   20866           "vuid": "VUID-vkGetPhysicalDeviceSurfaceFormats2KHR-pSurfaceFormats-parameter",
   20867           "text": " If the value referenced by <code>pSurfaceFormatCount</code> is not <code>0</code>, and <code>pSurfaceFormats</code> is not <code>NULL</code>, <code>pSurfaceFormats</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSurfaceFormatCount</code> <code>VkSurfaceFormat2KHR</code> structures"
   20868         }
   20869       ]
   20870     },
   20871     "VkSurfaceFormat2KHR": {
   20872       "(VK_KHR_surface)+(VK_KHR_get_surface_capabilities2)": [
   20873         {
   20874           "vuid": "VUID-VkSurfaceFormat2KHR-sType-sType",
   20875           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR</code>"
   20876         },
   20877         {
   20878           "vuid": "VUID-VkSurfaceFormat2KHR-pNext-pNext",
   20879           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20880         }
   20881       ]
   20882     },
   20883     "vkGetPhysicalDeviceSurfacePresentModesKHR": {
   20884       "(VK_KHR_surface)": [
   20885         {
   20886           "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-physicalDevice-parameter",
   20887           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20888         },
   20889         {
   20890           "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-surface-parameter",
   20891           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20892         },
   20893         {
   20894           "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModeCount-parameter",
   20895           "text": " <code>pPresentModeCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20896         },
   20897         {
   20898           "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-pPresentModes-parameter",
   20899           "text": " If the value referenced by <code>pPresentModeCount</code> is not <code>0</code>, and <code>pPresentModes</code> is not <code>NULL</code>, <code>pPresentModes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentModeCount</code> <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values"
   20900         },
   20901         {
   20902           "vuid": "VUID-vkGetPhysicalDeviceSurfacePresentModesKHR-commonparent",
   20903           "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   20904         }
   20905       ]
   20906     },
   20907     "vkGetDeviceGroupPresentCapabilitiesKHR": {
   20908       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   20909         {
   20910           "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-device-parameter",
   20911           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   20912         },
   20913         {
   20914           "vuid": "VUID-vkGetDeviceGroupPresentCapabilitiesKHR-pDeviceGroupPresentCapabilities-parameter",
   20915           "text": " <code>pDeviceGroupPresentCapabilities</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDeviceGroupPresentCapabilitiesKHR</code> structure"
   20916         }
   20917       ]
   20918     },
   20919     "VkDeviceGroupPresentCapabilitiesKHR": {
   20920       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   20921         {
   20922           "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-sType-sType",
   20923           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR</code>"
   20924         },
   20925         {
   20926           "vuid": "VUID-VkDeviceGroupPresentCapabilitiesKHR-pNext-pNext",
   20927           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   20928         }
   20929       ]
   20930     },
   20931     "vkGetDeviceGroupSurfacePresentModesKHR": {
   20932       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   20933         {
   20934           "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-device-parameter",
   20935           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   20936         },
   20937         {
   20938           "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-surface-parameter",
   20939           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20940         },
   20941         {
   20942           "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-pModes-parameter",
   20943           "text": " <code>pModes</code> <strong class=\"purple\">must</strong> be a valid pointer to a <a href=\"#VkDeviceGroupPresentModeFlagsKHR\">VkDeviceGroupPresentModeFlagsKHR</a> value"
   20944         },
   20945         {
   20946           "vuid": "VUID-vkGetDeviceGroupSurfacePresentModesKHR-commonparent",
   20947           "text": " Both of <code>device</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   20948         }
   20949       ]
   20950     },
   20951     "vkGetPhysicalDevicePresentRectanglesKHR": {
   20952       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   20953         {
   20954           "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-physicalDevice-parameter",
   20955           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   20956         },
   20957         {
   20958           "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-surface-parameter",
   20959           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   20960         },
   20961         {
   20962           "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRectCount-parameter",
   20963           "text": " <code>pRectCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   20964         },
   20965         {
   20966           "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-pRects-parameter",
   20967           "text": " If the value referenced by <code>pRectCount</code> is not <code>0</code>, and <code>pRects</code> is not <code>NULL</code>, <code>pRects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pRectCount</code> <code>VkRect2D</code> structures"
   20968         },
   20969         {
   20970           "vuid": "VUID-vkGetPhysicalDevicePresentRectanglesKHR-commonparent",
   20971           "text": " Both of <code>physicalDevice</code>, and <code>surface</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   20972         }
   20973       ]
   20974     },
   20975     "vkGetRefreshCycleDurationGOOGLE": {
   20976       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
   20977         {
   20978           "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-device-parameter",
   20979           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   20980         },
   20981         {
   20982           "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-swapchain-parameter",
   20983           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   20984         },
   20985         {
   20986           "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-pDisplayTimingProperties-parameter",
   20987           "text": " <code>pDisplayTimingProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkRefreshCycleDurationGOOGLE</code> structure"
   20988         },
   20989         {
   20990           "vuid": "VUID-vkGetRefreshCycleDurationGOOGLE-commonparent",
   20991           "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   20992         }
   20993       ]
   20994     },
   20995     "vkGetPastPresentationTimingGOOGLE": {
   20996       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
   20997         {
   20998           "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-device-parameter",
   20999           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21000         },
   21001         {
   21002           "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-swapchain-parameter",
   21003           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   21004         },
   21005         {
   21006           "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimingCount-parameter",
   21007           "text": " <code>pPresentationTimingCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   21008         },
   21009         {
   21010           "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-pPresentationTimings-parameter",
   21011           "text": " If the value referenced by <code>pPresentationTimingCount</code> is not <code>0</code>, and <code>pPresentationTimings</code> is not <code>NULL</code>, <code>pPresentationTimings</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPresentationTimingCount</code> <code>VkPastPresentationTimingGOOGLE</code> structures"
   21012         },
   21013         {
   21014           "vuid": "VUID-vkGetPastPresentationTimingGOOGLE-commonparent",
   21015           "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21016         }
   21017       ]
   21018     },
   21019     "vkGetSwapchainStatusKHR": {
   21020       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
   21021         {
   21022           "vuid": "VUID-vkGetSwapchainStatusKHR-device-parameter",
   21023           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21024         },
   21025         {
   21026           "vuid": "VUID-vkGetSwapchainStatusKHR-swapchain-parameter",
   21027           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   21028         },
   21029         {
   21030           "vuid": "VUID-vkGetSwapchainStatusKHR-commonparent",
   21031           "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21032         }
   21033       ]
   21034     },
   21035     "vkCreateSwapchainKHR": {
   21036       "(VK_KHR_surface)+(VK_KHR_swapchain)": [
   21037         {
   21038           "vuid": "VUID-vkCreateSwapchainKHR-device-parameter",
   21039           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21040         },
   21041         {
   21042           "vuid": "VUID-vkCreateSwapchainKHR-pCreateInfo-parameter",
   21043           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkSwapchainCreateInfoKHR</code> structure"
   21044         },
   21045         {
   21046           "vuid": "VUID-vkCreateSwapchainKHR-pAllocator-parameter",
   21047           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   21048         },
   21049         {
   21050           "vuid": "VUID-vkCreateSwapchainKHR-pSwapchain-parameter",
   21051           "text": " <code>pSwapchain</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkSwapchainKHR</code> handle"
   21052         }
   21053       ]
   21054     },
   21055     "VkSwapchainCreateInfoKHR": {
   21056       "(VK_KHR_surface)+(VK_KHR_swapchain)": [
   21057         {
   21058           "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-01270",
   21059           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a surface that is supported by the device as determined using <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>"
   21060         },
   21061         {
   21062           "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01271",
   21063           "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be greater than or equal to the value returned in the <code>minImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
   21064         },
   21065         {
   21066           "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01272",
   21067           "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be less than or equal to the value returned in the <code>maxImageCount</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface if the returned <code>maxImageCount</code> is not zero"
   21068         },
   21069         {
   21070           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01273",
   21071           "text": " <code>imageFormat</code> and <code>imageColorSpace</code> <strong class=\"purple\">must</strong> match the <code>format</code> and <code>colorSpace</code> members, respectively, of one of the <code>VkSurfaceFormatKHR</code> structures returned by <code>vkGetPhysicalDeviceSurfaceFormatsKHR</code> for the surface"
   21072         },
   21073         {
   21074           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01274",
   21075           "text": " <code>imageExtent</code> <strong class=\"purple\">must</strong> be between <code>minImageExtent</code> and <code>maxImageExtent</code>, inclusive, where <code>minImageExtent</code> and <code>maxImageExtent</code> are members of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
   21076         },
   21077         {
   21078           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageExtent-01689",
   21079           "text": " <code>imageExtent</code> members <code>width</code> and <code>height</code> <strong class=\"purple\">must</strong> both be non-zero"
   21080         },
   21081         {
   21082           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275",
   21083           "text": " <code>imageArrayLayers</code> <strong class=\"purple\">must</strong> be greater than <code>0</code> and less than or equal to the <code>maxImageArrayLayers</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
   21084         },
   21085         {
   21086           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01277",
   21087           "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values"
   21088         },
   21089         {
   21090           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01278",
   21091           "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>"
   21092         },
   21093         {
   21094           "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-01279",
   21095           "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedTransforms</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
   21096         },
   21097         {
   21098           "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-01280",
   21099           "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be one of the bits present in the <code>supportedCompositeAlpha</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
   21100         },
   21101         {
   21102           "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01281",
   21103           "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be one of the <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> values returned by <code>vkGetPhysicalDeviceSurfacePresentModesKHR</code> for the surface"
   21104         },
   21105         {
   21106           "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-01933",
   21107           "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a non-retired swapchain associated with native window referred to by <code>surface</code>"
   21108         },
   21109         {
   21110           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-01778",
   21111           "text": " The <a href=\"#swapchain-wsi-image-create-info\">implied image creation parameters</a> of the swapchain <strong class=\"purple\">must</strong> be supported as reported by <a href=\"#vkGetPhysicalDeviceImageFormatProperties\">vkGetPhysicalDeviceImageFormatProperties</a>"
   21112         },
   21113         {
   21114           "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-sType",
   21115           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR</code>"
   21116         },
   21117         {
   21118           "vuid": "VUID-VkSwapchainCreateInfoKHR-pNext-pNext",
   21119           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>, <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, or <a href=\"#VkSwapchainCounterCreateInfoEXT\">VkSwapchainCounterCreateInfoEXT</a>"
   21120         },
   21121         {
   21122           "vuid": "VUID-VkSwapchainCreateInfoKHR-sType-unique",
   21123           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   21124         },
   21125         {
   21126           "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-parameter",
   21127           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSwapchainCreateFlagBitsKHR\">VkSwapchainCreateFlagBitsKHR</a> values"
   21128         },
   21129         {
   21130           "vuid": "VUID-VkSwapchainCreateInfoKHR-surface-parameter",
   21131           "text": " <code>surface</code> <strong class=\"purple\">must</strong> be a valid <code>VkSurfaceKHR</code> handle"
   21132         },
   21133         {
   21134           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageFormat-parameter",
   21135           "text": " <code>imageFormat</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   21136         },
   21137         {
   21138           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter",
   21139           "text": " <code>imageColorSpace</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkColorSpaceKHR\">VkColorSpaceKHR</a> value"
   21140         },
   21141         {
   21142           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-parameter",
   21143           "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   21144         },
   21145         {
   21146           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-requiredbitmask",
   21147           "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   21148         },
   21149         {
   21150           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-parameter",
   21151           "text": " <code>imageSharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
   21152         },
   21153         {
   21154           "vuid": "VUID-VkSwapchainCreateInfoKHR-preTransform-parameter",
   21155           "text": " <code>preTransform</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceTransformFlagBitsKHR\">VkSurfaceTransformFlagBitsKHR</a> value"
   21156         },
   21157         {
   21158           "vuid": "VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter",
   21159           "text": " <code>compositeAlpha</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCompositeAlphaFlagBitsKHR\">VkCompositeAlphaFlagBitsKHR</a> value"
   21160         },
   21161         {
   21162           "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-parameter",
   21163           "text": " <code>presentMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkPresentModeKHR\">VkPresentModeKHR</a> value"
   21164         },
   21165         {
   21166           "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter",
   21167           "text": " If <code>oldSwapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>oldSwapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   21168         },
   21169         {
   21170           "vuid": "VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent",
   21171           "text": " If <code>oldSwapchain</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>surface</code>"
   21172         },
   21173         {
   21174           "vuid": "VUID-VkSwapchainCreateInfoKHR-commonparent",
   21175           "text": " Both of <code>oldSwapchain</code>, and <code>surface</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21176         }
   21177       ],
   21178       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
   21179         {
   21180           "vuid": "VUID-VkSwapchainCreateInfoKHR-minImageCount-01383",
   21181           "text": " <code>minImageCount</code> <strong class=\"purple\">must</strong> be <code>1</code> if <code>presentMode</code> is either <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>"
   21182         },
   21183         {
   21184           "vuid": "VUID-VkSwapchainCreateInfoKHR-presentMode-01427",
   21185           "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_IMMEDIATE_KHR</code>, <code>VK_PRESENT_MODE_MAILBOX_KHR</code>, <code>VK_PRESENT_MODE_FIFO_KHR</code> or <code>VK_PRESENT_MODE_FIFO_RELAXED_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilitiesKHR\">vkGetPhysicalDeviceSurfaceCapabilitiesKHR</a> for <code>surface</code>"
   21186         },
   21187         {
   21188           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01384",
   21189           "text": " If <code>presentMode</code> is <code>VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR</code> or <code>VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR</code>, <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>sharedPresentSupportedUsageFlags</code> member of the <a href=\"#VkSharedPresentSurfaceCapabilitiesKHR\">VkSharedPresentSurfaceCapabilitiesKHR</a> structure returned by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> for <code>surface</code>"
   21190         }
   21191       ],
   21192       "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
   21193         {
   21194           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageUsage-01276",
   21195           "text": " <code>imageUsage</code> <strong class=\"purple\">must</strong> be a subset of the supported usage flags present in the <code>supportedUsageFlags</code> member of the <code>VkSurfaceCapabilitiesKHR</code> structure returned by <code>vkGetPhysicalDeviceSurfaceCapabilitiesKHR</code> for the surface"
   21196         }
   21197       ],
   21198       "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   21199         {
   21200           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01393",
   21201           "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
   21202         }
   21203       ],
   21204       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   21205         {
   21206           "vuid": "VUID-VkSwapchainCreateInfoKHR-imageSharingMode-01428",
   21207           "text": " If <code>imageSharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than <code>pQueueFamilyPropertyCount</code> returned by either <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties\">vkGetPhysicalDeviceQueueFamilyProperties</a> or <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>"
   21208         }
   21209       ],
   21210       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   21211         {
   21212           "vuid": "VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429",
   21213           "text": " If the logical device was created with <a href=\"#VkDeviceGroupDeviceCreateInfo\">VkDeviceGroupDeviceCreateInfo</a>::<code>physicalDeviceCount</code> equal to 1, <code>flags</code> <strong class=\"purple\">must</strong> not contain <code>VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR</code>"
   21214         }
   21215       ],
   21216       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_swapchain_mutable_format)": [
   21217         {
   21218           "vuid": "VUID-VkSwapchainCreateInfoKHR-flags-03168",
   21219           "text": " If <code>flags</code> contains <code>VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR</code> then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with a <code>viewFormatCount</code> greater than zero and <code>pViewFormats</code> <strong class=\"purple\">must</strong> have an element equal to <code>imageFormat</code>"
   21220         }
   21221       ]
   21222     },
   21223     "VkDeviceGroupSwapchainCreateInfoKHR": {
   21224       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   21225         {
   21226           "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-sType-sType",
   21227           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR</code>"
   21228         },
   21229         {
   21230           "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-parameter",
   21231           "text": " <code>modes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> values"
   21232         },
   21233         {
   21234           "vuid": "VUID-VkDeviceGroupSwapchainCreateInfoKHR-modes-requiredbitmask",
   21235           "text": " <code>modes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   21236         }
   21237       ]
   21238     },
   21239     "VkSwapchainCounterCreateInfoEXT": {
   21240       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
   21241         {
   21242           "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-01244",
   21243           "text": " The bits in <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be supported by <a href=\"#VkSwapchainCreateInfoKHR\">VkSwapchainCreateInfoKHR</a>::<code>surface</code>, as reported by <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2EXT\">vkGetPhysicalDeviceSurfaceCapabilities2EXT</a>."
   21244         },
   21245         {
   21246           "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-sType-sType",
   21247           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT</code>"
   21248         },
   21249         {
   21250           "vuid": "VUID-VkSwapchainCounterCreateInfoEXT-surfaceCounters-parameter",
   21251           "text": " <code>surfaceCounters</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> values"
   21252         }
   21253       ]
   21254     },
   21255     "vkGetSwapchainCounterEXT": {
   21256       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_display_control)": [
   21257         {
   21258           "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-01245",
   21259           "text": " One or more present commands on <code>swapchain</code> <strong class=\"purple\">must</strong> have been processed by the presentation engine."
   21260         },
   21261         {
   21262           "vuid": "VUID-vkGetSwapchainCounterEXT-device-parameter",
   21263           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21264         },
   21265         {
   21266           "vuid": "VUID-vkGetSwapchainCounterEXT-swapchain-parameter",
   21267           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   21268         },
   21269         {
   21270           "vuid": "VUID-vkGetSwapchainCounterEXT-counter-parameter",
   21271           "text": " <code>counter</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSurfaceCounterFlagBitsEXT\">VkSurfaceCounterFlagBitsEXT</a> value"
   21272         },
   21273         {
   21274           "vuid": "VUID-vkGetSwapchainCounterEXT-pCounterValue-parameter",
   21275           "text": " <code>pCounterValue</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint64_t</code> value"
   21276         },
   21277         {
   21278           "vuid": "VUID-vkGetSwapchainCounterEXT-commonparent",
   21279           "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21280         }
   21281       ]
   21282     },
   21283     "vkDestroySwapchainKHR": {
   21284       "(VK_KHR_surface)+(VK_KHR_swapchain)": [
   21285         {
   21286           "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01282",
   21287           "text": " All uses of presentable images acquired from <code>swapchain</code> <strong class=\"purple\">must</strong> have completed execution"
   21288         },
   21289         {
   21290           "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01283",
   21291           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   21292         },
   21293         {
   21294           "vuid": "VUID-vkDestroySwapchainKHR-swapchain-01284",
   21295           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>swapchain</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   21296         },
   21297         {
   21298           "vuid": "VUID-vkDestroySwapchainKHR-device-parameter",
   21299           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21300         },
   21301         {
   21302           "vuid": "VUID-vkDestroySwapchainKHR-swapchain-parameter",
   21303           "text": " If <code>swapchain</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   21304         },
   21305         {
   21306           "vuid": "VUID-vkDestroySwapchainKHR-pAllocator-parameter",
   21307           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   21308         },
   21309         {
   21310           "vuid": "VUID-vkDestroySwapchainKHR-commonparent",
   21311           "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21312         }
   21313       ]
   21314     },
   21315     "vkCreateSharedSwapchainsKHR": {
   21316       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
   21317         {
   21318           "vuid": "VUID-vkCreateSharedSwapchainsKHR-device-parameter",
   21319           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21320         },
   21321         {
   21322           "vuid": "VUID-vkCreateSharedSwapchainsKHR-pCreateInfos-parameter",
   21323           "text": " <code>pCreateInfos</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainCreateInfoKHR</code> structures"
   21324         },
   21325         {
   21326           "vuid": "VUID-vkCreateSharedSwapchainsKHR-pAllocator-parameter",
   21327           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   21328         },
   21329         {
   21330           "vuid": "VUID-vkCreateSharedSwapchainsKHR-pSwapchains-parameter",
   21331           "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkSwapchainKHR</code> handles"
   21332         },
   21333         {
   21334           "vuid": "VUID-vkCreateSharedSwapchainsKHR-swapchainCount-arraylength",
   21335           "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   21336         }
   21337       ]
   21338     },
   21339     "vkGetSwapchainImagesKHR": {
   21340       "(VK_KHR_surface)+(VK_KHR_swapchain)": [
   21341         {
   21342           "vuid": "VUID-vkGetSwapchainImagesKHR-device-parameter",
   21343           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21344         },
   21345         {
   21346           "vuid": "VUID-vkGetSwapchainImagesKHR-swapchain-parameter",
   21347           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   21348         },
   21349         {
   21350           "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImageCount-parameter",
   21351           "text": " <code>pSwapchainImageCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   21352         },
   21353         {
   21354           "vuid": "VUID-vkGetSwapchainImagesKHR-pSwapchainImages-parameter",
   21355           "text": " If the value referenced by <code>pSwapchainImageCount</code> is not <code>0</code>, and <code>pSwapchainImages</code> is not <code>NULL</code>, <code>pSwapchainImages</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pSwapchainImageCount</code> <code>VkImage</code> handles"
   21356         },
   21357         {
   21358           "vuid": "VUID-vkGetSwapchainImagesKHR-commonparent",
   21359           "text": " Both of <code>device</code>, and <code>swapchain</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21360         }
   21361       ]
   21362     },
   21363     "vkAcquireNextImageKHR": {
   21364       "(VK_KHR_surface)+(VK_KHR_swapchain)": [
   21365         {
   21366           "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01285",
   21367           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
   21368         },
   21369         {
   21370           "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01286",
   21371           "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
   21372         },
   21373         {
   21374           "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01779",
   21375           "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending"
   21376         },
   21377         {
   21378           "vuid": "VUID-vkAcquireNextImageKHR-fence-01287",
   21379           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
   21380         },
   21381         {
   21382           "vuid": "VUID-vkAcquireNextImageKHR-semaphore-01780",
   21383           "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   21384         },
   21385         {
   21386           "vuid": "VUID-vkAcquireNextImageKHR-swapchain-01802",
   21387           "text": " If the number of currently acquired images is greater than the difference between the number of images in <code>swapchain</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, <code>timeout</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>"
   21388         },
   21389         {
   21390           "vuid": "VUID-vkAcquireNextImageKHR-device-parameter",
   21391           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21392         },
   21393         {
   21394           "vuid": "VUID-vkAcquireNextImageKHR-swapchain-parameter",
   21395           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   21396         },
   21397         {
   21398           "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parameter",
   21399           "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
   21400         },
   21401         {
   21402           "vuid": "VUID-vkAcquireNextImageKHR-fence-parameter",
   21403           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   21404         },
   21405         {
   21406           "vuid": "VUID-vkAcquireNextImageKHR-pImageIndex-parameter",
   21407           "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   21408         },
   21409         {
   21410           "vuid": "VUID-vkAcquireNextImageKHR-semaphore-parent",
   21411           "text": " If <code>semaphore</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   21412         },
   21413         {
   21414           "vuid": "VUID-vkAcquireNextImageKHR-fence-parent",
   21415           "text": " If <code>fence</code> is a valid handle, it <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>device</code>"
   21416         },
   21417         {
   21418           "vuid": "VUID-vkAcquireNextImageKHR-commonparent",
   21419           "text": " Both of <code>device</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21420         }
   21421       ]
   21422     },
   21423     "vkAcquireNextImage2KHR": {
   21424       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   21425         {
   21426           "vuid": "VUID-vkAcquireNextImage2KHR-swapchain-01803",
   21427           "text": " If the number of currently acquired images is greater than the difference between the number of images in the <code>swapchain</code> member of <code>pAcquireInfo</code> and the value of <a href=\"#VkSurfaceCapabilitiesKHR\">VkSurfaceCapabilitiesKHR</a>::<code>minImageCount</code> as returned by a call to <a href=\"#vkGetPhysicalDeviceSurfaceCapabilities2KHR\">vkGetPhysicalDeviceSurfaceCapabilities2KHR</a> with the <code>surface</code> used to create <code>swapchain</code>, the <code>timeout</code> member of <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> not be <code>UINT64_MAX</code>"
   21428         },
   21429         {
   21430           "vuid": "VUID-vkAcquireNextImage2KHR-device-parameter",
   21431           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21432         },
   21433         {
   21434           "vuid": "VUID-vkAcquireNextImage2KHR-pAcquireInfo-parameter",
   21435           "text": " <code>pAcquireInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAcquireNextImageInfoKHR</code> structure"
   21436         },
   21437         {
   21438           "vuid": "VUID-vkAcquireNextImage2KHR-pImageIndex-parameter",
   21439           "text": " <code>pImageIndex</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   21440         }
   21441       ]
   21442     },
   21443     "VkAcquireNextImageInfoKHR": {
   21444       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   21445         {
   21446           "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-01675",
   21447           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> not be in the retired state"
   21448         },
   21449         {
   21450           "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01288",
   21451           "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled"
   21452         },
   21453         {
   21454           "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01781",
   21455           "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> not have any uncompleted signal or wait operations pending"
   21456         },
   21457         {
   21458           "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-01289",
   21459           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> it <strong class=\"purple\">must</strong> be unsignaled and <strong class=\"purple\">must</strong> not be associated with any other queue command that has not yet completed execution on that queue"
   21460         },
   21461         {
   21462           "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01782",
   21463           "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   21464         },
   21465         {
   21466           "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01290",
   21467           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> be a valid device mask"
   21468         },
   21469         {
   21470           "vuid": "VUID-VkAcquireNextImageInfoKHR-deviceMask-01291",
   21471           "text": " <code>deviceMask</code> <strong class=\"purple\">must</strong> not be zero"
   21472         },
   21473         {
   21474           "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-01804",
   21475           "text": " <code>semaphore</code> and <code>fence</code> <strong class=\"purple\">must</strong> not both be equal to <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>."
   21476         },
   21477         {
   21478           "vuid": "VUID-VkAcquireNextImageInfoKHR-sType-sType",
   21479           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR</code>"
   21480         },
   21481         {
   21482           "vuid": "VUID-VkAcquireNextImageInfoKHR-pNext-pNext",
   21483           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   21484         },
   21485         {
   21486           "vuid": "VUID-VkAcquireNextImageInfoKHR-swapchain-parameter",
   21487           "text": " <code>swapchain</code> <strong class=\"purple\">must</strong> be a valid <code>VkSwapchainKHR</code> handle"
   21488         },
   21489         {
   21490           "vuid": "VUID-VkAcquireNextImageInfoKHR-semaphore-parameter",
   21491           "text": " If <code>semaphore</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>semaphore</code> <strong class=\"purple\">must</strong> be a valid <code>VkSemaphore</code> handle"
   21492         },
   21493         {
   21494           "vuid": "VUID-VkAcquireNextImageInfoKHR-fence-parameter",
   21495           "text": " If <code>fence</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>fence</code> <strong class=\"purple\">must</strong> be a valid <code>VkFence</code> handle"
   21496         },
   21497         {
   21498           "vuid": "VUID-VkAcquireNextImageInfoKHR-commonparent",
   21499           "text": " Each of <code>fence</code>, <code>semaphore</code>, and <code>swapchain</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21500         }
   21501       ]
   21502     },
   21503     "vkQueuePresentKHR": {
   21504       "(VK_KHR_surface)+(VK_KHR_swapchain)": [
   21505         {
   21506           "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01292",
   21507           "text": " Each element of <code>pSwapchains</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a swapchain that is created for a surface for which presentation is supported from <code>queue</code> as determined using a call to <code>vkGetPhysicalDeviceSurfaceSupportKHR</code>"
   21508         },
   21509         {
   21510           "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01294",
   21511           "text": " When a semaphore unsignal operation defined by the elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> executes on <code>queue</code>, no other queue <strong class=\"purple\">must</strong> be waiting on the same semaphore."
   21512         },
   21513         {
   21514           "vuid": "VUID-vkQueuePresentKHR-pWaitSemaphores-01295",
   21515           "text": " All elements of the <code>pWaitSemaphores</code> member of <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be semaphores that are signaled, or have <a href=\"#synchronization-semaphores-signaling\">semaphore signal operations</a> previously submitted for execution."
   21516         },
   21517         {
   21518           "vuid": "VUID-vkQueuePresentKHR-queue-parameter",
   21519           "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
   21520         },
   21521         {
   21522           "vuid": "VUID-vkQueuePresentKHR-pPresentInfo-parameter",
   21523           "text": " <code>pPresentInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPresentInfoKHR</code> structure"
   21524         }
   21525       ],
   21526       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
   21527         {
   21528           "vuid": "VUID-vkQueuePresentKHR-pSwapchains-01293",
   21529           "text": " If more than one member of <code>pSwapchains</code> was created from a display surface, all display surfaces referenced that refer to the same display <strong class=\"purple\">must</strong> use the same display mode"
   21530         }
   21531       ]
   21532     },
   21533     "VkPresentInfoKHR": {
   21534       "(VK_KHR_surface)+(VK_KHR_swapchain)+!(VK_KHR_shared_presentable_image)": [
   21535         {
   21536           "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01296",
   21537           "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>"
   21538         }
   21539       ],
   21540       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_shared_presentable_image)": [
   21541         {
   21542           "vuid": "VUID-VkPresentInfoKHR-pImageIndices-01430",
   21543           "text": " Each element of <code>pImageIndices</code> <strong class=\"purple\">must</strong> be the index of a presentable image acquired from the swapchain specified by the corresponding element of the <code>pSwapchains</code> array, and the presented image subresource <strong class=\"purple\">must</strong> be in the <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> or <code>VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR</code> layout at the time the operation is executed on a <code>VkDevice</code>"
   21544         }
   21545       ],
   21546       "(VK_KHR_surface)+(VK_KHR_swapchain)": [
   21547         {
   21548           "vuid": "VUID-VkPresentInfoKHR-sType-sType",
   21549           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_INFO_KHR</code>"
   21550         },
   21551         {
   21552           "vuid": "VUID-VkPresentInfoKHR-pNext-pNext",
   21553           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDeviceGroupPresentInfoKHR\">VkDeviceGroupPresentInfoKHR</a>, <a href=\"#VkDisplayPresentInfoKHR\">VkDisplayPresentInfoKHR</a>, <a href=\"#VkPresentRegionsKHR\">VkPresentRegionsKHR</a>, or <a href=\"#VkPresentTimesInfoGOOGLE\">VkPresentTimesInfoGOOGLE</a>"
   21554         },
   21555         {
   21556           "vuid": "VUID-VkPresentInfoKHR-sType-unique",
   21557           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   21558         },
   21559         {
   21560           "vuid": "VUID-VkPresentInfoKHR-pWaitSemaphores-parameter",
   21561           "text": " If <code>waitSemaphoreCount</code> is not <code>0</code>, <code>pWaitSemaphores</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>waitSemaphoreCount</code> valid <code>VkSemaphore</code> handles"
   21562         },
   21563         {
   21564           "vuid": "VUID-VkPresentInfoKHR-pSwapchains-parameter",
   21565           "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles"
   21566         },
   21567         {
   21568           "vuid": "VUID-VkPresentInfoKHR-pImageIndices-parameter",
   21569           "text": " <code>pImageIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values"
   21570         },
   21571         {
   21572           "vuid": "VUID-VkPresentInfoKHR-pResults-parameter",
   21573           "text": " If <code>pResults</code> is not <code>NULL</code>, <code>pResults</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <a href=\"#VkResult\">VkResult</a> values"
   21574         },
   21575         {
   21576           "vuid": "VUID-VkPresentInfoKHR-swapchainCount-arraylength",
   21577           "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   21578         },
   21579         {
   21580           "vuid": "VUID-VkPresentInfoKHR-commonparent",
   21581           "text": " Both of the elements of <code>pSwapchains</code>, and the elements of <code>pWaitSemaphores</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21582         }
   21583       ]
   21584     },
   21585     "VkPresentRegionsKHR": {
   21586       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
   21587         {
   21588           "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-01260",
   21589           "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentRegionsKHR</code> structure"
   21590         },
   21591         {
   21592           "vuid": "VUID-VkPresentRegionsKHR-sType-sType",
   21593           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR</code>"
   21594         },
   21595         {
   21596           "vuid": "VUID-VkPresentRegionsKHR-pRegions-parameter",
   21597           "text": " If <code>pRegions</code> is not <code>NULL</code>, <code>pRegions</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkPresentRegionKHR</code> structures"
   21598         },
   21599         {
   21600           "vuid": "VUID-VkPresentRegionsKHR-swapchainCount-arraylength",
   21601           "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   21602         }
   21603       ]
   21604     },
   21605     "VkPresentRegionKHR": {
   21606       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
   21607         {
   21608           "vuid": "VUID-VkPresentRegionKHR-pRectangles-parameter",
   21609           "text": " If <code>rectangleCount</code> is not <code>0</code>, and <code>pRectangles</code> is not <code>NULL</code>, <code>pRectangles</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>rectangleCount</code> valid <code>VkRectLayerKHR</code> structures"
   21610         }
   21611       ]
   21612     },
   21613     "VkRectLayerKHR": {
   21614       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_incremental_present)": [
   21615         {
   21616           "vuid": "VUID-VkRectLayerKHR-offset-01261",
   21617           "text": " The sum of <code>offset</code> and <code>extent</code> <strong class=\"purple\">must</strong> be no greater than the <code>imageExtent</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>."
   21618         },
   21619         {
   21620           "vuid": "VUID-VkRectLayerKHR-layer-01262",
   21621           "text": " <code>layer</code> <strong class=\"purple\">must</strong> be less than <code>imageArrayLayers</code> member of the <code>VkSwapchainCreateInfoKHR</code> structure given to <a href=\"#vkCreateSwapchainKHR\">vkCreateSwapchainKHR</a>."
   21622         }
   21623       ]
   21624     },
   21625     "VkDisplayPresentInfoKHR": {
   21626       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_KHR_display_swapchain)": [
   21627         {
   21628           "vuid": "VUID-VkDisplayPresentInfoKHR-srcRect-01257",
   21629           "text": " <code>srcRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the image being presented"
   21630         },
   21631         {
   21632           "vuid": "VUID-VkDisplayPresentInfoKHR-dstRect-01258",
   21633           "text": " <code>dstRect</code> <strong class=\"purple\">must</strong> specify a rectangular region that is a subset of the <code>visibleRegion</code> parameter of the display mode the swapchain being presented uses"
   21634         },
   21635         {
   21636           "vuid": "VUID-VkDisplayPresentInfoKHR-persistentContent-01259",
   21637           "text": " If the <code>persistentContent</code> member of the <code>VkDisplayPropertiesKHR</code> structure returned by <code>vkGetPhysicalDeviceDisplayPropertiesKHR</code> for the display the present operation targets then <code>persistent</code> <strong class=\"purple\">must</strong> be <code>VK_FALSE</code>"
   21638         },
   21639         {
   21640           "vuid": "VUID-VkDisplayPresentInfoKHR-sType-sType",
   21641           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR</code>"
   21642         }
   21643       ]
   21644     },
   21645     "VkDeviceGroupPresentInfoKHR": {
   21646       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_VERSION_1_1,VK_KHR_device_group)": [
   21647         {
   21648           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-swapchainCount-01297",
   21649           "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> equal <code>0</code> or <a href=\"#VkPresentInfoKHR\">VkPresentInfoKHR</a>::<code>swapchainCount</code>"
   21650         },
   21651         {
   21652           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01298",
   21653           "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero"
   21654         },
   21655         {
   21656           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01299",
   21657           "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have exactly one bit set, and some physical device in the logical device <strong class=\"purple\">must</strong> include that bit in its <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>."
   21658         },
   21659         {
   21660           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01300",
   21661           "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR</code>, then each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> have a value for which all set bits are set in one of the elements of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code>"
   21662         },
   21663         {
   21664           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01301",
   21665           "text": " If <code>mode</code> is <code>VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR</code>, then for each bit set in each element of <code>pDeviceMasks</code>, the corresponding element of <a href=\"#VkDeviceGroupPresentCapabilitiesKHR\">VkDeviceGroupPresentCapabilitiesKHR</a>::<code>presentMask</code> <strong class=\"purple\">must</strong> be non-zero"
   21666         },
   21667         {
   21668           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-01302",
   21669           "text": " The value of each element of <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be equal to the device mask passed in <a href=\"#VkAcquireNextImageInfoKHR\">VkAcquireNextImageInfoKHR</a>::<code>deviceMask</code> when the image index was last acquired"
   21670         },
   21671         {
   21672           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-01303",
   21673           "text": " <code>mode</code> <strong class=\"purple\">must</strong> have exactly one bit set, and that bit <strong class=\"purple\">must</strong> have been included in <a href=\"#VkDeviceGroupSwapchainCreateInfoKHR\">VkDeviceGroupSwapchainCreateInfoKHR</a>::<code>modes</code>"
   21674         },
   21675         {
   21676           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-sType-sType",
   21677           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR</code>"
   21678         },
   21679         {
   21680           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-pDeviceMasks-parameter",
   21681           "text": " If <code>swapchainCount</code> is not <code>0</code>, <code>pDeviceMasks</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>uint32_t</code> values"
   21682         },
   21683         {
   21684           "vuid": "VUID-VkDeviceGroupPresentInfoKHR-mode-parameter",
   21685           "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDeviceGroupPresentModeFlagBitsKHR\">VkDeviceGroupPresentModeFlagBitsKHR</a> value"
   21686         }
   21687       ]
   21688     },
   21689     "VkPresentTimesInfoGOOGLE": {
   21690       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_GOOGLE_display_timing)": [
   21691         {
   21692           "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-01247",
   21693           "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be the same value as <code>VkPresentInfoKHR</code>::<code>swapchainCount</code>, where <code>VkPresentInfoKHR</code> is in the <code>pNext</code> chain of this <code>VkPresentTimesInfoGOOGLE</code> structure."
   21694         },
   21695         {
   21696           "vuid": "VUID-VkPresentTimesInfoGOOGLE-sType-sType",
   21697           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE</code>"
   21698         },
   21699         {
   21700           "vuid": "VUID-VkPresentTimesInfoGOOGLE-pTimes-parameter",
   21701           "text": " If <code>pTimes</code> is not <code>NULL</code>, <code>pTimes</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> <code>VkPresentTimeGOOGLE</code> structures"
   21702         },
   21703         {
   21704           "vuid": "VUID-VkPresentTimesInfoGOOGLE-swapchainCount-arraylength",
   21705           "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   21706         }
   21707       ]
   21708     },
   21709     "vkSetHdrMetadataEXT": {
   21710       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
   21711         {
   21712           "vuid": "VUID-vkSetHdrMetadataEXT-device-parameter",
   21713           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   21714         },
   21715         {
   21716           "vuid": "VUID-vkSetHdrMetadataEXT-pSwapchains-parameter",
   21717           "text": " <code>pSwapchains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkSwapchainKHR</code> handles"
   21718         },
   21719         {
   21720           "vuid": "VUID-vkSetHdrMetadataEXT-pMetadata-parameter",
   21721           "text": " <code>pMetadata</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>swapchainCount</code> valid <code>VkHdrMetadataEXT</code> structures"
   21722         },
   21723         {
   21724           "vuid": "VUID-vkSetHdrMetadataEXT-swapchainCount-arraylength",
   21725           "text": " <code>swapchainCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   21726         },
   21727         {
   21728           "vuid": "VUID-vkSetHdrMetadataEXT-commonparent",
   21729           "text": " Both of <code>device</code>, and the elements of <code>pSwapchains</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkInstance</code>"
   21730         }
   21731       ]
   21732     },
   21733     "VkHdrMetadataEXT": {
   21734       "(VK_KHR_surface)+(VK_KHR_swapchain)+(VK_EXT_hdr_metadata)": [
   21735         {
   21736           "vuid": "VUID-VkHdrMetadataEXT-sType-sType",
   21737           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_HDR_METADATA_EXT</code>"
   21738         },
   21739         {
   21740           "vuid": "VUID-VkHdrMetadataEXT-pNext-pNext",
   21741           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   21742         }
   21743       ]
   21744     },
   21745     "vkCmdTraceRaysNV": {
   21746       "(VK_NV_ray_tracing)": [
   21747         {
   21748           "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02455",
   21749           "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>raygenShaderBindingTableBuffer</code>"
   21750         },
   21751         {
   21752           "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingOffset-02456",
   21753           "text": " <code>raygenShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
   21754         },
   21755         {
   21756           "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02457",
   21757           "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>missShaderBindingTableBuffer</code>"
   21758         },
   21759         {
   21760           "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingOffset-02458",
   21761           "text": " <code>missShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
   21762         },
   21763         {
   21764           "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02459",
   21765           "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>hitShaderBindingTableBuffer</code>"
   21766         },
   21767         {
   21768           "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingOffset-02460",
   21769           "text": " <code>hitShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
   21770         },
   21771         {
   21772           "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02461",
   21773           "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be less than the size of <code>callableShaderBindingTableBuffer</code>"
   21774         },
   21775         {
   21776           "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingOffset-02462",
   21777           "text": " <code>callableShaderBindingOffset</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupBaseAlignment</code>"
   21778         },
   21779         {
   21780           "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02463",
   21781           "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
   21782         },
   21783         {
   21784           "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02464",
   21785           "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
   21786         },
   21787         {
   21788           "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02465",
   21789           "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a multiple of <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>shaderGroupHandleSize</code>"
   21790         },
   21791         {
   21792           "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingStride-02466",
   21793           "text": " <code>missShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
   21794         },
   21795         {
   21796           "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingStride-02467",
   21797           "text": " <code>hitShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
   21798         },
   21799         {
   21800           "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingStride-02468",
   21801           "text": " <code>callableShaderBindingStride</code> <strong class=\"purple\">must</strong> be a less than or equal to <code>VkPhysicalDeviceRayTracingPropertiesNV</code>::<code>maxShaderGroupStride</code>"
   21802         },
   21803         {
   21804           "vuid": "VUID-vkCmdTraceRaysNV-width-02469",
   21805           "text": " <code>width</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[0]"
   21806         },
   21807         {
   21808           "vuid": "VUID-vkCmdTraceRaysNV-height-02470",
   21809           "text": " <code>height</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[1]"
   21810         },
   21811         {
   21812           "vuid": "VUID-vkCmdTraceRaysNV-depth-02471",
   21813           "text": " <code>depth</code> <strong class=\"purple\">must</strong> be less than or equal to <code>VkPhysicalDeviceLimits</code>::<code>maxComputeWorkGroupCount</code>[2]"
   21814         },
   21815         {
   21816           "vuid": "VUID-vkCmdTraceRaysNV-None-02472",
   21817           "text": " For each set <em>n</em> that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, a descriptor set <strong class=\"purple\">must</strong> have been bound to <em>n</em> at <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, with a <code>VkPipelineLayout</code> that is compatible for set <em>n</em>, with the <code>VkPipelineLayout</code> used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   21818         },
   21819         {
   21820           "vuid": "VUID-vkCmdTraceRaysNV-None-02473",
   21821           "text": " Descriptors in each bound descriptor set, specified via <code>vkCmdBindDescriptorSets</code>, <strong class=\"purple\">must</strong> be valid if they are statically used by the bound <code>VkPipeline</code> object, specified via <code>vkCmdBindPipeline</code>"
   21822         },
   21823         {
   21824           "vuid": "VUID-vkCmdTraceRaysNV-None-02474",
   21825           "text": " A valid ray tracing pipeline <strong class=\"purple\">must</strong> be bound to the current command buffer with <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>"
   21826         },
   21827         {
   21828           "vuid": "VUID-vkCmdTraceRaysNV-None-02475",
   21829           "text": " For each push constant that is statically used by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, a push constant value <strong class=\"purple\">must</strong> have been set for <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code>, with a <code>VkPipelineLayout</code> that is compatible for push constants with the one used to create the current <code>VkPipeline</code>, as described in <a href=\"#descriptorsets-compatibility\">Pipeline Layout Compatibility</a>"
   21830         },
   21831         {
   21832           "vuid": "VUID-vkCmdTraceRaysNV-None-02476",
   21833           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used to sample from any <code>VkImage</code> with a <code>VkImageView</code> of the type <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, <code>VK_IMAGE_VIEW_TYPE_1D_ARRAY</code>, <code>VK_IMAGE_VIEW_TYPE_2D_ARRAY</code> or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>, in any shader stage"
   21834         },
   21835         {
   21836           "vuid": "VUID-vkCmdTraceRaysNV-None-02477",
   21837           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions with <code>ImplicitLod</code>, <code>Dref</code> or <code>Proj</code> in their name, in any shader stage"
   21838         },
   21839         {
   21840           "vuid": "VUID-vkCmdTraceRaysNV-None-02478",
   21841           "text": " If any <code>VkSampler</code> object that is accessed from a shader by the <code>VkPipeline</code> bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> uses unnormalized coordinates, it <strong class=\"purple\">must</strong> not be used with any of the SPIR-V <code>OpImageSample*</code> or <code>OpImageSparseSample*</code> instructions that includes a LOD bias or any offset values, in any shader stage"
   21842         },
   21843         {
   21844           "vuid": "VUID-vkCmdTraceRaysNV-None-02479",
   21845           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> accesses a uniform buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   21846         },
   21847         {
   21848           "vuid": "VUID-vkCmdTraceRaysNV-None-02480",
   21849           "text": " If the <a href=\"#features-robustBufferAccess\">robust buffer access</a> feature is not enabled, and any shader stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> accesses a storage buffer, it <strong class=\"purple\">must</strong> not access values outside of the range of that buffer specified in the bound descriptor set"
   21850         },
   21851         {
   21852           "vuid": "VUID-vkCmdTraceRaysNV-None-02481",
   21853           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_LINEAR</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT</code>"
   21854         },
   21855         {
   21856           "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-parameter",
   21857           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   21858         },
   21859         {
   21860           "vuid": "VUID-vkCmdTraceRaysNV-raygenShaderBindingTableBuffer-parameter",
   21861           "text": " <code>raygenShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   21862         },
   21863         {
   21864           "vuid": "VUID-vkCmdTraceRaysNV-missShaderBindingTableBuffer-parameter",
   21865           "text": " If <code>missShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>missShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   21866         },
   21867         {
   21868           "vuid": "VUID-vkCmdTraceRaysNV-hitShaderBindingTableBuffer-parameter",
   21869           "text": " If <code>hitShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>hitShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   21870         },
   21871         {
   21872           "vuid": "VUID-vkCmdTraceRaysNV-callableShaderBindingTableBuffer-parameter",
   21873           "text": " If <code>callableShaderBindingTableBuffer</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>callableShaderBindingTableBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   21874         },
   21875         {
   21876           "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-recording",
   21877           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   21878         },
   21879         {
   21880           "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-cmdpool",
   21881           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   21882         },
   21883         {
   21884           "vuid": "VUID-vkCmdTraceRaysNV-commonparent",
   21885           "text": " Each of <code>callableShaderBindingTableBuffer</code>, <code>commandBuffer</code>, <code>hitShaderBindingTableBuffer</code>, <code>missShaderBindingTableBuffer</code>, and <code>raygenShaderBindingTableBuffer</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   21886         }
   21887       ],
   21888       "(VK_NV_ray_tracing)+(VK_IMG_filter_cubic)": [
   21889         {
   21890           "vuid": "VUID-vkCmdTraceRaysNV-None-02482",
   21891           "text": " If a <code>VkImageView</code> is sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command, then the image view&#8217;s <a href=\"#resources-image-view-format-features\">format features</a> <strong class=\"purple\">must</strong> contain <code>VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG</code>"
   21892         },
   21893         {
   21894           "vuid": "VUID-vkCmdTraceRaysNV-None-02483",
   21895           "text": " Any <a href=\"#VkImageView\">VkImageView</a> being sampled with <code>VK_FILTER_CUBIC_IMG</code> as a result of this command <strong class=\"purple\">must</strong> not have a <a href=\"#VkImageViewType\">VkImageViewType</a> of <code>VK_IMAGE_VIEW_TYPE_3D</code>, <code>VK_IMAGE_VIEW_TYPE_CUBE</code>, or <code>VK_IMAGE_VIEW_TYPE_CUBE_ARRAY</code>"
   21896         }
   21897       ],
   21898       "(VK_NV_ray_tracing)+(VK_VERSION_1_1)": [
   21899         {
   21900           "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02484",
   21901           "text": " If <code>commandBuffer</code> is an unprotected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> reads from or writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer"
   21902         },
   21903         {
   21904           "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02485",
   21905           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> writes to any image or buffer, that image or buffer <strong class=\"purple\">must</strong> not be an unprotected image or unprotected buffer"
   21906         },
   21907         {
   21908           "vuid": "VUID-vkCmdTraceRaysNV-commandBuffer-02486",
   21909           "text": " If <code>commandBuffer</code> is a protected command buffer, and any pipeline stage other than the ray tracing pipeline stage in the <code>VkPipeline</code> object bound to <code>VK_PIPELINE_BIND_POINT_RAY_TRACING_NV</code> reads from any image or buffer, the image or buffer <strong class=\"purple\">must</strong> not be a protected image or protected buffer"
   21910         }
   21911       ],
   21912       "(VK_NV_ray_tracing)+(VK_NV_corner_sampled_image)": [
   21913         {
   21914           "vuid": "VUID-vkCmdTraceRaysNV-flags-02487",
   21915           "text": " Any <a href=\"#VkImage\">VkImage</a> created with a <a href=\"#VkImageCreateInfo\">VkImageCreateInfo</a>::<code>flags</code> containing <code>VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV</code> sampled as a result of this command <strong class=\"purple\">must</strong> only be sampled using a <a href=\"#VkSamplerAddressMode\">VkSamplerAddressMode</a> of <code>VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE</code>"
   21916         }
   21917       ]
   21918     },
   21919     "vkCmdBuildAccelerationStructureNV": {
   21920       "(VK_NV_ray_tracing)": [
   21921         {
   21922           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-geometryCount-02241",
   21923           "text": " <code>geometryCount</code> <strong class=\"purple\">must</strong> be less than or equal to <a href=\"#VkPhysicalDeviceRayTracingPropertiesNV\">VkPhysicalDeviceRayTracingPropertiesNV</a>::<code>maxGeometryCount</code>"
   21924         },
   21925         {
   21926           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-02488",
   21927           "text": " <code>dst</code> <strong class=\"purple\">must</strong> have been created with compatible <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a> where <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>:::<code>type</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code> are identical, <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>instanceCount</code> and <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>geometryCount</code> for <code>dst</code> are greater than or equal to the build size and each geometry in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>pGeometries</code> for <code>dst</code> has greater than or equal to the number of vertices, indices, and AABBs."
   21928         },
   21929         {
   21930           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02489",
   21931           "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   21932         },
   21933         {
   21934           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02490",
   21935           "text": " If <code>update</code> is <code>VK_TRUE</code>, <code>src</code> <strong class=\"purple\">must</strong> have been built before with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV</code> set in <a href=\"#VkAccelerationStructureInfoNV\">VkAccelerationStructureInfoNV</a>::<code>flags</code>"
   21936         },
   21937         {
   21938           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02491",
   21939           "text": " If <code>update</code> is <code>VK_FALSE</code>, The <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>"
   21940         },
   21941         {
   21942           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-update-02492",
   21943           "text": " If <code>update</code> is <code>VK_TRUE</code>, The <code>size</code> member of the <a href=\"#VkMemoryRequirements\">VkMemoryRequirements</a> structure returned from a call to <a href=\"#vkGetAccelerationStructureMemoryRequirementsNV\">vkGetAccelerationStructureMemoryRequirementsNV</a> with <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>accelerationStructure</code> set to <code>dst</code> and <a href=\"#VkAccelerationStructureMemoryRequirementsInfoNV\">VkAccelerationStructureMemoryRequirementsInfoNV</a>::<code>type</code> set to <code>VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV</code> <strong class=\"purple\">must</strong> be less than or equal to the size of <code>scratch</code> minus <code>scratchOffset</code>"
   21944         },
   21945         {
   21946           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-parameter",
   21947           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   21948         },
   21949         {
   21950           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-pInfo-parameter",
   21951           "text": " <code>pInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAccelerationStructureInfoNV</code> structure"
   21952         },
   21953         {
   21954           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-instanceData-parameter",
   21955           "text": " If <code>instanceData</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>instanceData</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   21956         },
   21957         {
   21958           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-dst-parameter",
   21959           "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
   21960         },
   21961         {
   21962           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-src-parameter",
   21963           "text": " If <code>src</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>src</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
   21964         },
   21965         {
   21966           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-scratch-parameter",
   21967           "text": " <code>scratch</code> <strong class=\"purple\">must</strong> be a valid <code>VkBuffer</code> handle"
   21968         },
   21969         {
   21970           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-recording",
   21971           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   21972         },
   21973         {
   21974           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commandBuffer-cmdpool",
   21975           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   21976         },
   21977         {
   21978           "vuid": "VUID-vkCmdBuildAccelerationStructureNV-commonparent",
   21979           "text": " Each of <code>commandBuffer</code>, <code>dst</code>, <code>instanceData</code>, <code>scratch</code>, and <code>src</code> that are valid handles <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   21980         }
   21981       ]
   21982     },
   21983     "vkCmdWriteAccelerationStructuresPropertiesNV": {
   21984       "(VK_NV_ray_tracing)": [
   21985         {
   21986           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-02242",
   21987           "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
   21988         },
   21989         {
   21990           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02493",
   21991           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> have been created with a <code>queryType</code> matching <code>queryType</code>"
   21992         },
   21993         {
   21994           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-02494",
   21995           "text": " The queries identified by <code>queryPool</code> and <code>firstQuery</code> <strong class=\"purple\">must</strong> be <em>unavailable</em>"
   21996         },
   21997         {
   21998           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructures-02495",
   21999           "text": " All acceleration structures in <code>accelerationStructures</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV</code> if <code>queryType</code> is <code>VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV</code>"
   22000         },
   22001         {
   22002           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-parameter",
   22003           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   22004         },
   22005         {
   22006           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-pAccelerationStructures-parameter",
   22007           "text": " <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>accelerationStructureCount</code> valid <code>VkAccelerationStructureNV</code> handles"
   22008         },
   22009         {
   22010           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryType-parameter",
   22011           "text": " <code>queryType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkQueryType\">VkQueryType</a> value"
   22012         },
   22013         {
   22014           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-queryPool-parameter",
   22015           "text": " <code>queryPool</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueryPool</code> handle"
   22016         },
   22017         {
   22018           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-recording",
   22019           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   22020         },
   22021         {
   22022           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commandBuffer-cmdpool",
   22023           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   22024         },
   22025         {
   22026           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-accelerationStructureCount-arraylength",
   22027           "text": " <code>accelerationStructureCount</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   22028         },
   22029         {
   22030           "vuid": "VUID-vkCmdWriteAccelerationStructuresPropertiesNV-commonparent",
   22031           "text": " Each of <code>commandBuffer</code>, <code>queryPool</code>, and the elements of <code>pAccelerationStructures</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   22032         }
   22033       ]
   22034     },
   22035     "vkCmdCopyAccelerationStructureNV": {
   22036       "(VK_NV_ray_tracing)": [
   22037         {
   22038           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-02496",
   22039           "text": " <code>mode</code> <strong class=\"purple\">must</strong> be <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV</code> or <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV</code>"
   22040         },
   22041         {
   22042           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-02497",
   22043           "text": " <code>src</code> <strong class=\"purple\">must</strong> have been built with <code>VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV</code> if <code>mode</code> is <code>VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV</code>"
   22044         },
   22045         {
   22046           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-parameter",
   22047           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   22048         },
   22049         {
   22050           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-dst-parameter",
   22051           "text": " <code>dst</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
   22052         },
   22053         {
   22054           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-src-parameter",
   22055           "text": " <code>src</code> <strong class=\"purple\">must</strong> be a valid <code>VkAccelerationStructureNV</code> handle"
   22056         },
   22057         {
   22058           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-mode-parameter",
   22059           "text": " <code>mode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkCopyAccelerationStructureModeNV\">VkCopyAccelerationStructureModeNV</a> value"
   22060         },
   22061         {
   22062           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-recording",
   22063           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   22064         },
   22065         {
   22066           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commandBuffer-cmdpool",
   22067           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support compute operations"
   22068         },
   22069         {
   22070           "vuid": "VUID-vkCmdCopyAccelerationStructureNV-commonparent",
   22071           "text": " Each of <code>commandBuffer</code>, <code>dst</code>, and <code>src</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from the same <code>VkDevice</code>"
   22072         }
   22073       ]
   22074     },
   22075     "vkEnumerateInstanceLayerProperties": {
   22076       "core": [
   22077         {
   22078           "vuid": "VUID-vkEnumerateInstanceLayerProperties-pPropertyCount-parameter",
   22079           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   22080         },
   22081         {
   22082           "vuid": "VUID-vkEnumerateInstanceLayerProperties-pProperties-parameter",
   22083           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkLayerProperties</code> structures"
   22084         }
   22085       ]
   22086     },
   22087     "vkEnumerateDeviceLayerProperties": {
   22088       "core": [
   22089         {
   22090           "vuid": "VUID-vkEnumerateDeviceLayerProperties-physicalDevice-parameter",
   22091           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22092         },
   22093         {
   22094           "vuid": "VUID-vkEnumerateDeviceLayerProperties-pPropertyCount-parameter",
   22095           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   22096         },
   22097         {
   22098           "vuid": "VUID-vkEnumerateDeviceLayerProperties-pProperties-parameter",
   22099           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkLayerProperties</code> structures"
   22100         }
   22101       ]
   22102     },
   22103     "vkEnumerateInstanceExtensionProperties": {
   22104       "core": [
   22105         {
   22106           "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pLayerName-parameter",
   22107           "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   22108         },
   22109         {
   22110           "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pPropertyCount-parameter",
   22111           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   22112         },
   22113         {
   22114           "vuid": "VUID-vkEnumerateInstanceExtensionProperties-pProperties-parameter",
   22115           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkExtensionProperties</code> structures"
   22116         }
   22117       ]
   22118     },
   22119     "vkEnumerateDeviceExtensionProperties": {
   22120       "core": [
   22121         {
   22122           "vuid": "VUID-vkEnumerateDeviceExtensionProperties-physicalDevice-parameter",
   22123           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22124         },
   22125         {
   22126           "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pLayerName-parameter",
   22127           "text": " If <code>pLayerName</code> is not <code>NULL</code>, <code>pLayerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   22128         },
   22129         {
   22130           "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pPropertyCount-parameter",
   22131           "text": " <code>pPropertyCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   22132         },
   22133         {
   22134           "vuid": "VUID-vkEnumerateDeviceExtensionProperties-pProperties-parameter",
   22135           "text": " If the value referenced by <code>pPropertyCount</code> is not <code>0</code>, and <code>pProperties</code> is not <code>NULL</code>, <code>pProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pPropertyCount</code> <code>VkExtensionProperties</code> structures"
   22136         }
   22137       ]
   22138     },
   22139     "vkGetPhysicalDeviceFeatures": {
   22140       "core": [
   22141         {
   22142           "vuid": "VUID-vkGetPhysicalDeviceFeatures-physicalDevice-parameter",
   22143           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22144         },
   22145         {
   22146           "vuid": "VUID-vkGetPhysicalDeviceFeatures-pFeatures-parameter",
   22147           "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures</code> structure"
   22148         }
   22149       ]
   22150     },
   22151     "vkGetPhysicalDeviceFeatures2": {
   22152       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   22153         {
   22154           "vuid": "VUID-vkGetPhysicalDeviceFeatures2-physicalDevice-parameter",
   22155           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22156         },
   22157         {
   22158           "vuid": "VUID-vkGetPhysicalDeviceFeatures2-pFeatures-parameter",
   22159           "text": " <code>pFeatures</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkPhysicalDeviceFeatures2</code> structure"
   22160         }
   22161       ]
   22162     },
   22163     "VkPhysicalDeviceFeatures2": {
   22164       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   22165         {
   22166           "vuid": "VUID-VkPhysicalDeviceFeatures2-sType-sType",
   22167           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2</code>"
   22168         }
   22169       ]
   22170     },
   22171     "VkPhysicalDeviceVariablePointerFeatures": {
   22172       "(VK_VERSION_1_1,VK_KHR_variable_pointers)": [
   22173         {
   22174           "vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-variablePointers-01431",
   22175           "text": " If <code>variablePointers</code> is enabled then <code>variablePointersStorageBuffer</code> <strong class=\"purple\">must</strong> also be enabled."
   22176         },
   22177         {
   22178           "vuid": "VUID-VkPhysicalDeviceVariablePointerFeatures-sType-sType",
   22179           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES</code>"
   22180         }
   22181       ]
   22182     },
   22183     "VkPhysicalDeviceMultiviewFeatures": {
   22184       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   22185         {
   22186           "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewGeometryShader-00580",
   22187           "text": " If <code>multiviewGeometryShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled."
   22188         },
   22189         {
   22190           "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-multiviewTessellationShader-00581",
   22191           "text": " If <code>multiviewTessellationShader</code> is enabled then <code>multiview</code> <strong class=\"purple\">must</strong> also be enabled."
   22192         },
   22193         {
   22194           "vuid": "VUID-VkPhysicalDeviceMultiviewFeatures-sType-sType",
   22195           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES</code>"
   22196         }
   22197       ]
   22198     },
   22199     "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR": {
   22200       "(VK_KHR_shader_atomic_int64)": [
   22201         {
   22202           "vuid": "VUID-VkPhysicalDeviceShaderAtomicInt64FeaturesKHR-sType-sType",
   22203           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR</code>"
   22204         }
   22205       ]
   22206     },
   22207     "VkPhysicalDevice8BitStorageFeaturesKHR": {
   22208       "(VK_KHR_8bit_storage)": [
   22209         {
   22210           "vuid": "VUID-VkPhysicalDevice8BitStorageFeaturesKHR-sType-sType",
   22211           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR</code>"
   22212         }
   22213       ]
   22214     },
   22215     "VkPhysicalDevice16BitStorageFeatures": {
   22216       "(VK_VERSION_1_1,VK_KHR_16bit_storage)": [
   22217         {
   22218           "vuid": "VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType",
   22219           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES</code>"
   22220         }
   22221       ]
   22222     },
   22223     "VkPhysicalDeviceFloat16Int8FeaturesKHR": {
   22224       "(VK_KHR_shader_float16_int8)": [
   22225         {
   22226           "vuid": "VUID-VkPhysicalDeviceFloat16Int8FeaturesKHR-sType-sType",
   22227           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR</code>"
   22228         }
   22229       ]
   22230     },
   22231     "VkPhysicalDeviceSamplerYcbcrConversionFeatures": {
   22232       "(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   22233         {
   22234           "vuid": "VUID-VkPhysicalDeviceSamplerYcbcrConversionFeatures-sType-sType",
   22235           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES</code>"
   22236         }
   22237       ]
   22238     },
   22239     "VkPhysicalDeviceProtectedMemoryFeatures": {
   22240       "(VK_VERSION_1_1)": [
   22241         {
   22242           "vuid": "VUID-VkPhysicalDeviceProtectedMemoryFeatures-sType-sType",
   22243           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES</code>"
   22244         }
   22245       ]
   22246     },
   22247     "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT": {
   22248       "(VK_EXT_blend_operation_advanced)": [
   22249         {
   22250           "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT-sType-sType",
   22251           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT</code>"
   22252         }
   22253       ]
   22254     },
   22255     "VkPhysicalDeviceConditionalRenderingFeaturesEXT": {
   22256       "(VK_EXT_conditional_rendering)": [
   22257         {
   22258           "vuid": "VUID-VkPhysicalDeviceConditionalRenderingFeaturesEXT-sType-sType",
   22259           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT</code>"
   22260         }
   22261       ]
   22262     },
   22263     "VkPhysicalDeviceShaderDrawParameterFeatures": {
   22264       "(VK_VERSION_1_1)": [
   22265         {
   22266           "vuid": "VUID-VkPhysicalDeviceShaderDrawParameterFeatures-sType-sType",
   22267           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES</code>"
   22268         }
   22269       ]
   22270     },
   22271     "VkPhysicalDeviceMeshShaderFeaturesNV": {
   22272       "(VK_NV_mesh_shader)": [
   22273         {
   22274           "vuid": "VUID-VkPhysicalDeviceMeshShaderFeaturesNV-sType-sType",
   22275           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV</code>"
   22276         }
   22277       ]
   22278     },
   22279     "VkPhysicalDeviceDescriptorIndexingFeaturesEXT": {
   22280       "(VK_EXT_descriptor_indexing)": [
   22281         {
   22282           "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingFeaturesEXT-sType-sType",
   22283           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT</code>"
   22284         }
   22285       ]
   22286     },
   22287     "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT": {
   22288       "(VK_EXT_vertex_attribute_divisor)": [
   22289         {
   22290           "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT-sType-sType",
   22291           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT</code>"
   22292         }
   22293       ]
   22294     },
   22295     "VkPhysicalDeviceASTCDecodeFeaturesEXT": {
   22296       "(VK_EXT_astc_decode_mode)": [
   22297         {
   22298           "vuid": "VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType",
   22299           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT</code>"
   22300         }
   22301       ]
   22302     },
   22303     "VkPhysicalDeviceTransformFeedbackFeaturesEXT": {
   22304       "(VK_EXT_transform_feedback)": [
   22305         {
   22306           "vuid": "VUID-VkPhysicalDeviceTransformFeedbackFeaturesEXT-sType-sType",
   22307           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT</code>"
   22308         }
   22309       ]
   22310     },
   22311     "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR": {
   22312       "(VK_KHR_vulkan_memory_model)": [
   22313         {
   22314           "vuid": "VUID-VkPhysicalDeviceVulkanMemoryModelFeaturesKHR-sType-sType",
   22315           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR</code>"
   22316         }
   22317       ]
   22318     },
   22319     "VkPhysicalDeviceInlineUniformBlockFeaturesEXT": {
   22320       "(VK_EXT_inline_uniform_block)": [
   22321         {
   22322           "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockFeaturesEXT-sType-sType",
   22323           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT</code>"
   22324         }
   22325       ]
   22326     },
   22327     "VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV": {
   22328       "(VK_NV_representative_fragment_test)": [
   22329         {
   22330           "vuid": "VUID-VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV-sType-sType",
   22331           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV</code>"
   22332         }
   22333       ]
   22334     },
   22335     "VkPhysicalDeviceExclusiveScissorFeaturesNV": {
   22336       "(VK_NV_scissor_exclusive)": [
   22337         {
   22338           "vuid": "VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType",
   22339           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV</code>"
   22340         }
   22341       ]
   22342     },
   22343     "VkPhysicalDeviceCornerSampledImageFeaturesNV": {
   22344       "(VK_NV_corner_sampled_image)": [
   22345         {
   22346           "vuid": "VUID-VkPhysicalDeviceCornerSampledImageFeaturesNV-sType-sType",
   22347           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV</code>"
   22348         }
   22349       ]
   22350     },
   22351     "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV": {
   22352       "(VK_NV_compute_shader_derivatives)": [
   22353         {
   22354           "vuid": "VUID-VkPhysicalDeviceComputeShaderDerivativesFeaturesNV-sType-sType",
   22355           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV</code>"
   22356         }
   22357       ]
   22358     },
   22359     "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV": {
   22360       "(VK_NV_fragment_shader_barycentric)": [
   22361         {
   22362           "vuid": "VUID-VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV-sType-sType",
   22363           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV</code>"
   22364         }
   22365       ]
   22366     },
   22367     "VkPhysicalDeviceShaderImageFootprintFeaturesNV": {
   22368       "(VK_NV_shader_image_footprint)": [
   22369         {
   22370           "vuid": "VUID-VkPhysicalDeviceShaderImageFootprintFeaturesNV-sType-sType",
   22371           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV</code>"
   22372         }
   22373       ]
   22374     },
   22375     "VkPhysicalDeviceShadingRateImageFeaturesNV": {
   22376       "(VK_NV_shading_rate_image)": [
   22377         {
   22378           "vuid": "VUID-VkPhysicalDeviceShadingRateImageFeaturesNV-sType-sType",
   22379           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV</code>"
   22380         }
   22381       ]
   22382     },
   22383     "VkPhysicalDeviceFragmentDensityMapFeaturesEXT": {
   22384       "(VK_EXT_fragment_density_map)": [
   22385         {
   22386           "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapFeaturesEXT-sType-sType",
   22387           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT</code>"
   22388         }
   22389       ]
   22390     },
   22391     "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT": {
   22392       "(VK_EXT_scalar_block_layout)": [
   22393         {
   22394           "vuid": "VUID-VkPhysicalDeviceScalarBlockLayoutFeaturesEXT-sType-sType",
   22395           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT</code>"
   22396         }
   22397       ]
   22398     },
   22399     "VkPhysicalDeviceDepthClipEnableFeaturesEXT": {
   22400       "(VK_EXT_depth_clip_enable)": [
   22401         {
   22402           "vuid": "VUID-VkPhysicalDeviceDepthClipEnableFeaturesEXT-sType-sType",
   22403           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT</code>"
   22404         }
   22405       ]
   22406     },
   22407     "VkPhysicalDeviceMemoryPriorityFeaturesEXT": {
   22408       "(VK_EXT_memory_priority)": [
   22409         {
   22410           "vuid": "VUID-VkPhysicalDeviceMemoryPriorityFeaturesEXT-sType-sType",
   22411           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT</code>"
   22412         }
   22413       ]
   22414     },
   22415     "VkPhysicalDeviceBufferAddressFeaturesEXT": {
   22416       "(VK_EXT_buffer_device_address)": [
   22417         {
   22418           "vuid": "VUID-VkPhysicalDeviceBufferAddressFeaturesEXT-sType-sType",
   22419           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT</code>"
   22420         }
   22421       ]
   22422     },
   22423     "VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV": {
   22424       "(VK_NV_dedicated_allocation_image_aliasing)": [
   22425         {
   22426           "vuid": "VUID-VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV-sType-sType",
   22427           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV</code>"
   22428         }
   22429       ]
   22430     },
   22431     "VkPhysicalDeviceCooperativeMatrixFeaturesNV": {
   22432       "(VK_NV_cooperative_matrix)": [
   22433         {
   22434           "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixFeaturesNV-sType-sType",
   22435           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV</code>"
   22436         }
   22437       ]
   22438     },
   22439     "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT": {
   22440       "(VK_EXT_ycbcr_image_arrays)": [
   22441         {
   22442           "vuid": "VUID-VkPhysicalDeviceYcbcrImageArraysFeaturesEXT-sType-sType",
   22443           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT</code>"
   22444         }
   22445       ]
   22446     },
   22447     "VkPhysicalDevicePushDescriptorPropertiesKHR": {
   22448       "(VK_KHR_push_descriptor)": [
   22449         {
   22450           "vuid": "VUID-VkPhysicalDevicePushDescriptorPropertiesKHR-sType-sType",
   22451           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR</code>"
   22452         }
   22453       ]
   22454     },
   22455     "VkPhysicalDeviceMultiviewProperties": {
   22456       "(VK_VERSION_1_1,VK_KHR_multiview)": [
   22457         {
   22458           "vuid": "VUID-VkPhysicalDeviceMultiviewProperties-sType-sType",
   22459           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES</code>"
   22460         }
   22461       ]
   22462     },
   22463     "VkPhysicalDeviceFloatControlsPropertiesKHR": {
   22464       "(VK_KHR_shader_float_controls)": [
   22465         {
   22466           "vuid": "VUID-VkPhysicalDeviceFloatControlsPropertiesKHR-sType-sType",
   22467           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR</code>"
   22468         }
   22469       ]
   22470     },
   22471     "VkPhysicalDeviceDiscardRectanglePropertiesEXT": {
   22472       "(VK_EXT_discard_rectangles)": [
   22473         {
   22474           "vuid": "VUID-VkPhysicalDeviceDiscardRectanglePropertiesEXT-sType-sType",
   22475           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT</code>"
   22476         }
   22477       ]
   22478     },
   22479     "VkPhysicalDeviceSampleLocationsPropertiesEXT": {
   22480       "(VK_EXT_sample_locations)": [
   22481         {
   22482           "vuid": "VUID-VkPhysicalDeviceSampleLocationsPropertiesEXT-sType-sType",
   22483           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT</code>"
   22484         }
   22485       ]
   22486     },
   22487     "VkPhysicalDeviceExternalMemoryHostPropertiesEXT": {
   22488       "(VK_EXT_external_memory_host)": [
   22489         {
   22490           "vuid": "VUID-VkPhysicalDeviceExternalMemoryHostPropertiesEXT-sType-sType",
   22491           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT</code>"
   22492         }
   22493       ]
   22494     },
   22495     "VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX": {
   22496       "(VK_NVX_multiview_per_view_attributes)": [
   22497         {
   22498           "vuid": "VUID-VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX-sType-sType",
   22499           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX</code>"
   22500         }
   22501       ]
   22502     },
   22503     "VkPhysicalDevicePointClippingProperties": {
   22504       "(VK_VERSION_1_1,VK_KHR_maintenance2)": [
   22505         {
   22506           "vuid": "VUID-VkPhysicalDevicePointClippingProperties-sType-sType",
   22507           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES</code>"
   22508         }
   22509       ]
   22510     },
   22511     "VkPhysicalDeviceSubgroupProperties": {
   22512       "(VK_VERSION_1_1)": [
   22513         {
   22514           "vuid": "VUID-VkPhysicalDeviceSubgroupProperties-sType-sType",
   22515           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES</code>"
   22516         }
   22517       ]
   22518     },
   22519     "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT": {
   22520       "(VK_EXT_blend_operation_advanced)": [
   22521         {
   22522           "vuid": "VUID-VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT-sType-sType",
   22523           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT</code>"
   22524         }
   22525       ]
   22526     },
   22527     "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT": {
   22528       "(VK_EXT_vertex_attribute_divisor)": [
   22529         {
   22530           "vuid": "VUID-VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT-sType-sType",
   22531           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT</code>"
   22532         }
   22533       ]
   22534     },
   22535     "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT": {
   22536       "(VK_EXT_sampler_filter_minmax)": [
   22537         {
   22538           "vuid": "VUID-VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT-sType-sType",
   22539           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT</code>"
   22540         }
   22541       ]
   22542     },
   22543     "VkPhysicalDeviceProtectedMemoryProperties": {
   22544       "(VK_VERSION_1_1)": [
   22545         {
   22546           "vuid": "VUID-VkPhysicalDeviceProtectedMemoryProperties-sType-sType",
   22547           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES</code>"
   22548         }
   22549       ]
   22550     },
   22551     "VkPhysicalDeviceMaintenance3Properties": {
   22552       "(VK_VERSION_1_1,VK_KHR_maintenance3)": [
   22553         {
   22554           "vuid": "VUID-VkPhysicalDeviceMaintenance3Properties-sType-sType",
   22555           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES</code>"
   22556         }
   22557       ]
   22558     },
   22559     "VkPhysicalDeviceMeshShaderPropertiesNV": {
   22560       "(VK_NV_mesh_shader)": [
   22561         {
   22562           "vuid": "VUID-VkPhysicalDeviceMeshShaderPropertiesNV-sType-sType",
   22563           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV</code>"
   22564         }
   22565       ]
   22566     },
   22567     "VkPhysicalDeviceDescriptorIndexingPropertiesEXT": {
   22568       "(VK_EXT_descriptor_indexing)": [
   22569         {
   22570           "vuid": "VUID-VkPhysicalDeviceDescriptorIndexingPropertiesEXT-sType-sType",
   22571           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT</code>"
   22572         }
   22573       ]
   22574     },
   22575     "VkPhysicalDeviceInlineUniformBlockPropertiesEXT": {
   22576       "(VK_EXT_inline_uniform_block)": [
   22577         {
   22578           "vuid": "VUID-VkPhysicalDeviceInlineUniformBlockPropertiesEXT-sType-sType",
   22579           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT</code>"
   22580         }
   22581       ]
   22582     },
   22583     "VkPhysicalDeviceConservativeRasterizationPropertiesEXT": {
   22584       "(VK_EXT_conservative_rasterization)": [
   22585         {
   22586           "vuid": "VUID-VkPhysicalDeviceConservativeRasterizationPropertiesEXT-sType-sType",
   22587           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT</code>"
   22588         }
   22589       ]
   22590     },
   22591     "VkPhysicalDeviceFragmentDensityMapPropertiesEXT": {
   22592       "(VK_EXT_fragment_density_map)": [
   22593         {
   22594           "vuid": "VUID-VkPhysicalDeviceFragmentDensityMapPropertiesEXT-sType-sType",
   22595           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT</code>"
   22596         }
   22597       ]
   22598     },
   22599     "VkPhysicalDeviceShaderCorePropertiesAMD": {
   22600       "(VK_AMD_shader_core_properties)": [
   22601         {
   22602           "vuid": "VUID-VkPhysicalDeviceShaderCorePropertiesAMD-sType-sType",
   22603           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD</code>"
   22604         }
   22605       ]
   22606     },
   22607     "VkPhysicalDeviceDepthStencilResolvePropertiesKHR": {
   22608       "(VK_KHR_depth_stencil_resolve)": [
   22609         {
   22610           "vuid": "VUID-VkPhysicalDeviceDepthStencilResolvePropertiesKHR-sType-sType",
   22611           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR</code>"
   22612         }
   22613       ]
   22614     },
   22615     "VkPhysicalDeviceShadingRateImagePropertiesNV": {
   22616       "(VK_NV_shading_rate_image)": [
   22617         {
   22618           "vuid": "VUID-VkPhysicalDeviceShadingRateImagePropertiesNV-sType-sType",
   22619           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV</code>"
   22620         }
   22621       ]
   22622     },
   22623     "VkPhysicalDeviceTransformFeedbackPropertiesEXT": {
   22624       "(VK_EXT_transform_feedback)": [
   22625         {
   22626           "vuid": "VUID-VkPhysicalDeviceTransformFeedbackPropertiesEXT-sType-sType",
   22627           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT</code>"
   22628         }
   22629       ]
   22630     },
   22631     "VkPhysicalDeviceRayTracingPropertiesNV": {
   22632       "(VK_NV_ray_tracing)": [
   22633         {
   22634           "vuid": "VUID-VkPhysicalDeviceRayTracingPropertiesNV-sType-sType",
   22635           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV</code>"
   22636         }
   22637       ]
   22638     },
   22639     "VkPhysicalDeviceCooperativeMatrixPropertiesNV": {
   22640       "(VK_NV_cooperative_matrix)": [
   22641         {
   22642           "vuid": "VUID-VkPhysicalDeviceCooperativeMatrixPropertiesNV-sType-sType",
   22643           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV</code>"
   22644         }
   22645       ]
   22646     },
   22647     "vkGetPhysicalDeviceMultisamplePropertiesEXT": {
   22648       "(VK_EXT_sample_locations)": [
   22649         {
   22650           "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-physicalDevice-parameter",
   22651           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22652         },
   22653         {
   22654           "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-samples-parameter",
   22655           "text": " <code>samples</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSampleCountFlagBits\">VkSampleCountFlagBits</a> value"
   22656         },
   22657         {
   22658           "vuid": "VUID-vkGetPhysicalDeviceMultisamplePropertiesEXT-pMultisampleProperties-parameter",
   22659           "text": " <code>pMultisampleProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkMultisamplePropertiesEXT</code> structure"
   22660         }
   22661       ]
   22662     },
   22663     "VkMultisamplePropertiesEXT": {
   22664       "(VK_EXT_sample_locations)": [
   22665         {
   22666           "vuid": "VUID-VkMultisamplePropertiesEXT-sType-sType",
   22667           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT</code>"
   22668         },
   22669         {
   22670           "vuid": "VUID-VkMultisamplePropertiesEXT-pNext-pNext",
   22671           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   22672         }
   22673       ]
   22674     },
   22675     "vkGetPhysicalDeviceFormatProperties": {
   22676       "core": [
   22677         {
   22678           "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-physicalDevice-parameter",
   22679           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22680         },
   22681         {
   22682           "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-format-parameter",
   22683           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   22684         },
   22685         {
   22686           "vuid": "VUID-vkGetPhysicalDeviceFormatProperties-pFormatProperties-parameter",
   22687           "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties</code> structure"
   22688         }
   22689       ]
   22690     },
   22691     "vkGetPhysicalDeviceFormatProperties2": {
   22692       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   22693         {
   22694           "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-physicalDevice-parameter",
   22695           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22696         },
   22697         {
   22698           "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-format-parameter",
   22699           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   22700         },
   22701         {
   22702           "vuid": "VUID-vkGetPhysicalDeviceFormatProperties2-pFormatProperties-parameter",
   22703           "text": " <code>pFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkFormatProperties2</code> structure"
   22704         }
   22705       ]
   22706     },
   22707     "VkFormatProperties2": {
   22708       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   22709         {
   22710           "vuid": "VUID-VkFormatProperties2-sType-sType",
   22711           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2</code>"
   22712         },
   22713         {
   22714           "vuid": "VUID-VkFormatProperties2-pNext-pNext",
   22715           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkDrmFormatModifierPropertiesListEXT\">VkDrmFormatModifierPropertiesListEXT</a>"
   22716         }
   22717       ]
   22718     },
   22719     "VkDrmFormatModifierPropertiesListEXT": {
   22720       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
   22721         {
   22722           "vuid": "VUID-VkDrmFormatModifierPropertiesListEXT-sType-sType",
   22723           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT</code>"
   22724         }
   22725       ]
   22726     },
   22727     "vkGetPhysicalDeviceImageFormatProperties": {
   22728       "(VK_EXT_image_drm_format_modifier)": [
   22729         {
   22730           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-02248",
   22731           "text": " <code>tiling</code> <strong class=\"purple\">must</strong> not be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code>. (Use <a href=\"#vkGetPhysicalDeviceImageFormatProperties2\">vkGetPhysicalDeviceImageFormatProperties2</a> instead)."
   22732         }
   22733       ],
   22734       "core": [
   22735         {
   22736           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-physicalDevice-parameter",
   22737           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22738         },
   22739         {
   22740           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-format-parameter",
   22741           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   22742         },
   22743         {
   22744           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-type-parameter",
   22745           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
   22746         },
   22747         {
   22748           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-tiling-parameter",
   22749           "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
   22750         },
   22751         {
   22752           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-parameter",
   22753           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   22754         },
   22755         {
   22756           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-usage-requiredbitmask",
   22757           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   22758         },
   22759         {
   22760           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-flags-parameter",
   22761           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
   22762         },
   22763         {
   22764           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties-pImageFormatProperties-parameter",
   22765           "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties</code> structure"
   22766         }
   22767       ]
   22768     },
   22769     "vkGetPhysicalDeviceExternalImageFormatPropertiesNV": {
   22770       "(VK_NV_external_memory_capabilities)": [
   22771         {
   22772           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-physicalDevice-parameter",
   22773           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22774         },
   22775         {
   22776           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-format-parameter",
   22777           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   22778         },
   22779         {
   22780           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-type-parameter",
   22781           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
   22782         },
   22783         {
   22784           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-tiling-parameter",
   22785           "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
   22786         },
   22787         {
   22788           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-parameter",
   22789           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   22790         },
   22791         {
   22792           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-usage-requiredbitmask",
   22793           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   22794         },
   22795         {
   22796           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-flags-parameter",
   22797           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
   22798         },
   22799         {
   22800           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-externalHandleType-parameter",
   22801           "text": " <code>externalHandleType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkExternalMemoryHandleTypeFlagBitsNV\">VkExternalMemoryHandleTypeFlagBitsNV</a> values"
   22802         },
   22803         {
   22804           "vuid": "VUID-vkGetPhysicalDeviceExternalImageFormatPropertiesNV-pExternalImageFormatProperties-parameter",
   22805           "text": " <code>pExternalImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalImageFormatPropertiesNV</code> structure"
   22806         }
   22807       ]
   22808     },
   22809     "vkGetPhysicalDeviceImageFormatProperties2": {
   22810       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
   22811         {
   22812           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pNext-01868",
   22813           "text": " If the <code>pNext</code> chain of <code>pImageFormatProperties</code> contains an instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, the <code>pNext</code> chain of <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a> with <code>handleType</code> set to <code>VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID</code>."
   22814         }
   22815       ],
   22816       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   22817         {
   22818           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-physicalDevice-parameter",
   22819           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22820         },
   22821         {
   22822           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatInfo-parameter",
   22823           "text": " <code>pImageFormatInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceImageFormatInfo2</code> structure"
   22824         },
   22825         {
   22826           "vuid": "VUID-vkGetPhysicalDeviceImageFormatProperties2-pImageFormatProperties-parameter",
   22827           "text": " <code>pImageFormatProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkImageFormatProperties2</code> structure"
   22828         }
   22829       ]
   22830     },
   22831     "VkPhysicalDeviceImageFormatInfo2": {
   22832       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
   22833         {
   22834           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02249",
   22835           "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> if and only if the <code>pNext</code> chain contains <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>."
   22836         },
   22837         {
   22838           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-02313",
   22839           "text": " If <code>tiling</code> is <code>VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT</code> and <code>flags</code> contains <code>VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT</code>, then the <code>pNext</code> chain <strong class=\"purple\">must</strong> contain <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a> with non-zero <code>viewFormatCount</code>."
   22840         }
   22841       ],
   22842       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   22843         {
   22844           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-sType",
   22845           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2</code>"
   22846         },
   22847         {
   22848           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-pNext-pNext",
   22849           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkImageFormatListCreateInfoKHR\">VkImageFormatListCreateInfoKHR</a>, <a href=\"#VkImageStencilUsageCreateInfoEXT\">VkImageStencilUsageCreateInfoEXT</a>, <a href=\"#VkPhysicalDeviceExternalImageFormatInfo\">VkPhysicalDeviceExternalImageFormatInfo</a>, <a href=\"#VkPhysicalDeviceImageDrmFormatModifierInfoEXT\">VkPhysicalDeviceImageDrmFormatModifierInfoEXT</a>, or <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a>"
   22850         },
   22851         {
   22852           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-sType-unique",
   22853           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   22854         },
   22855         {
   22856           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-format-parameter",
   22857           "text": " <code>format</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkFormat\">VkFormat</a> value"
   22858         },
   22859         {
   22860           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-type-parameter",
   22861           "text": " <code>type</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageType\">VkImageType</a> value"
   22862         },
   22863         {
   22864           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-tiling-parameter",
   22865           "text": " <code>tiling</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageTiling\">VkImageTiling</a> value"
   22866         },
   22867         {
   22868           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-parameter",
   22869           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageUsageFlagBits\">VkImageUsageFlagBits</a> values"
   22870         },
   22871         {
   22872           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-usage-requiredbitmask",
   22873           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   22874         },
   22875         {
   22876           "vuid": "VUID-VkPhysicalDeviceImageFormatInfo2-flags-parameter",
   22877           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkImageCreateFlagBits\">VkImageCreateFlagBits</a> values"
   22878         }
   22879       ]
   22880     },
   22881     "VkImageFormatProperties2": {
   22882       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)": [
   22883         {
   22884           "vuid": "VUID-VkImageFormatProperties2-sType-sType",
   22885           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2</code>"
   22886         },
   22887         {
   22888           "vuid": "VUID-VkImageFormatProperties2-pNext-pNext",
   22889           "text": " Each <code>pNext</code> member of any structure (including this one) in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be either <code>NULL</code> or a pointer to a valid instance of <a href=\"#VkAndroidHardwareBufferUsageANDROID\">VkAndroidHardwareBufferUsageANDROID</a>, <a href=\"#VkExternalImageFormatProperties\">VkExternalImageFormatProperties</a>, <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>, <a href=\"#VkSamplerYcbcrConversionImageFormatProperties\">VkSamplerYcbcrConversionImageFormatProperties</a>, or <a href=\"#VkTextureLODGatherFormatPropertiesAMD\">VkTextureLODGatherFormatPropertiesAMD</a>"
   22890         },
   22891         {
   22892           "vuid": "VUID-VkImageFormatProperties2-sType-unique",
   22893           "text": " Each <code>sType</code> member in the <code>pNext</code> chain <strong class=\"purple\">must</strong> be unique"
   22894         }
   22895       ]
   22896     },
   22897     "VkTextureLODGatherFormatPropertiesAMD": {
   22898       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_AMD_texture_gather_bias_lod)": [
   22899         {
   22900           "vuid": "VUID-VkTextureLODGatherFormatPropertiesAMD-sType-sType",
   22901           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD</code>"
   22902         }
   22903       ]
   22904     },
   22905     "VkPhysicalDeviceExternalImageFormatInfo": {
   22906       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
   22907         {
   22908           "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-sType-sType",
   22909           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO</code>"
   22910         },
   22911         {
   22912           "vuid": "VUID-VkPhysicalDeviceExternalImageFormatInfo-handleType-parameter",
   22913           "text": " If <code>handleType</code> is not <code>0</code>, <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   22914         }
   22915       ]
   22916     },
   22917     "VkExternalImageFormatProperties": {
   22918       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
   22919         {
   22920           "vuid": "VUID-VkExternalImageFormatProperties-sType-sType",
   22921           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES</code>"
   22922         }
   22923       ]
   22924     },
   22925     "VkPhysicalDeviceImageDrmFormatModifierInfoEXT": {
   22926       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_image_drm_format_modifier)": [
   22927         {
   22928           "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02314",
   22929           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, then <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueFamilyIndexCount</code> <code>uint32_t</code> values."
   22930         },
   22931         {
   22932           "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02315",
   22933           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, then <code>queueFamilyIndexCount</code> <strong class=\"purple\">must</strong> be greater than <code>1</code>."
   22934         },
   22935         {
   22936           "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-02316",
   22937           "text": " If <code>sharingMode</code> is <code>VK_SHARING_MODE_CONCURRENT</code>, each element of <code>pQueueFamilyIndices</code> <strong class=\"purple\">must</strong> be unique and <strong class=\"purple\">must</strong> be less than the <code>pQueueFamilyPropertyCount</code> returned by <a href=\"#vkGetPhysicalDeviceQueueFamilyProperties2\">vkGetPhysicalDeviceQueueFamilyProperties2</a> for the <code>physicalDevice</code> that was used to create <code>device</code>."
   22938         },
   22939         {
   22940           "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sType-sType",
   22941           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT</code>"
   22942         },
   22943         {
   22944           "vuid": "VUID-VkPhysicalDeviceImageDrmFormatModifierInfoEXT-sharingMode-parameter",
   22945           "text": " <code>sharingMode</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkSharingMode\">VkSharingMode</a> value"
   22946         }
   22947       ]
   22948     },
   22949     "VkSamplerYcbcrConversionImageFormatProperties": {
   22950       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_VERSION_1_1,VK_KHR_sampler_ycbcr_conversion)": [
   22951         {
   22952           "vuid": "VUID-VkSamplerYcbcrConversionImageFormatProperties-sType-sType",
   22953           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES</code>"
   22954         }
   22955       ]
   22956     },
   22957     "VkAndroidHardwareBufferUsageANDROID": {
   22958       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_ANDROID_external_memory_android_hardware_buffer)": [
   22959         {
   22960           "vuid": "VUID-VkAndroidHardwareBufferUsageANDROID-sType-sType",
   22961           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID</code>"
   22962         }
   22963       ]
   22964     },
   22965     "VkPhysicalDeviceImageViewImageFormatInfoEXT": {
   22966       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
   22967         {
   22968           "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-sType-sType",
   22969           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT</code>"
   22970         },
   22971         {
   22972           "vuid": "VUID-VkPhysicalDeviceImageViewImageFormatInfoEXT-imageViewType-parameter",
   22973           "text": " <code>imageViewType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkImageViewType\">VkImageViewType</a> value"
   22974         }
   22975       ]
   22976     },
   22977     "VkFilterCubicImageViewImageFormatPropertiesEXT": {
   22978       "(VK_VERSION_1_1,VK_KHR_get_physical_device_properties2)+(VK_EXT_filter_cubic)": [
   22979         {
   22980           "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-sType-sType",
   22981           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT</code>"
   22982         },
   22983         {
   22984           "vuid": "VUID-VkFilterCubicImageViewImageFormatPropertiesEXT-pNext-02627",
   22985           "text": " If the <code>pNext</code> chain of the <a href=\"#VkImageFormatProperties2\">VkImageFormatProperties2</a> structure contains an instance of <a href=\"#VkFilterCubicImageViewImageFormatPropertiesEXT\">VkFilterCubicImageViewImageFormatPropertiesEXT</a>, the <code>pNext</code> chain of the <a href=\"#VkPhysicalDeviceImageFormatInfo2\">VkPhysicalDeviceImageFormatInfo2</a> structure <strong class=\"purple\">must</strong> contain an instance of <a href=\"#VkPhysicalDeviceImageViewImageFormatInfoEXT\">VkPhysicalDeviceImageViewImageFormatInfoEXT</a> with an <code>imageViewType</code> that is compatible with <code>imageType</code>."
   22986         }
   22987       ]
   22988     },
   22989     "vkGetPhysicalDeviceExternalBufferProperties": {
   22990       "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
   22991         {
   22992           "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-physicalDevice-parameter",
   22993           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   22994         },
   22995         {
   22996           "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferInfo-parameter",
   22997           "text": " <code>pExternalBufferInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalBufferInfo</code> structure"
   22998         },
   22999         {
   23000           "vuid": "VUID-vkGetPhysicalDeviceExternalBufferProperties-pExternalBufferProperties-parameter",
   23001           "text": " <code>pExternalBufferProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalBufferProperties</code> structure"
   23002         }
   23003       ]
   23004     },
   23005     "VkPhysicalDeviceExternalBufferInfo": {
   23006       "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
   23007         {
   23008           "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-sType-sType",
   23009           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO</code>"
   23010         },
   23011         {
   23012           "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-pNext-pNext",
   23013           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23014         },
   23015         {
   23016           "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-flags-parameter",
   23017           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferCreateFlagBits\">VkBufferCreateFlagBits</a> values"
   23018         },
   23019         {
   23020           "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-parameter",
   23021           "text": " <code>usage</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkBufferUsageFlagBits\">VkBufferUsageFlagBits</a> values"
   23022         },
   23023         {
   23024           "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-usage-requiredbitmask",
   23025           "text": " <code>usage</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   23026         },
   23027         {
   23028           "vuid": "VUID-VkPhysicalDeviceExternalBufferInfo-handleType-parameter",
   23029           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalMemoryHandleTypeFlagBits\">VkExternalMemoryHandleTypeFlagBits</a> value"
   23030         }
   23031       ]
   23032     },
   23033     "VkExternalBufferProperties": {
   23034       "(VK_VERSION_1_1,VK_KHR_external_memory_capabilities)": [
   23035         {
   23036           "vuid": "VUID-VkExternalBufferProperties-sType-sType",
   23037           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES</code>"
   23038         },
   23039         {
   23040           "vuid": "VUID-VkExternalBufferProperties-pNext-pNext",
   23041           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23042         }
   23043       ]
   23044     },
   23045     "vkGetPhysicalDeviceExternalSemaphoreProperties": {
   23046       "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
   23047         {
   23048           "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-physicalDevice-parameter",
   23049           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   23050         },
   23051         {
   23052           "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreInfo-parameter",
   23053           "text": " <code>pExternalSemaphoreInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalSemaphoreInfo</code> structure"
   23054         },
   23055         {
   23056           "vuid": "VUID-vkGetPhysicalDeviceExternalSemaphoreProperties-pExternalSemaphoreProperties-parameter",
   23057           "text": " <code>pExternalSemaphoreProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalSemaphoreProperties</code> structure"
   23058         }
   23059       ]
   23060     },
   23061     "VkPhysicalDeviceExternalSemaphoreInfo": {
   23062       "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
   23063         {
   23064           "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-sType-sType",
   23065           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO</code>"
   23066         },
   23067         {
   23068           "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-pNext-pNext",
   23069           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23070         },
   23071         {
   23072           "vuid": "VUID-VkPhysicalDeviceExternalSemaphoreInfo-handleType-parameter",
   23073           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalSemaphoreHandleTypeFlagBits\">VkExternalSemaphoreHandleTypeFlagBits</a> value"
   23074         }
   23075       ]
   23076     },
   23077     "VkExternalSemaphoreProperties": {
   23078       "(VK_VERSION_1_1,VK_KHR_external_semaphore_capabilities)": [
   23079         {
   23080           "vuid": "VUID-VkExternalSemaphoreProperties-sType-sType",
   23081           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES</code>"
   23082         },
   23083         {
   23084           "vuid": "VUID-VkExternalSemaphoreProperties-pNext-pNext",
   23085           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23086         }
   23087       ]
   23088     },
   23089     "vkGetPhysicalDeviceExternalFenceProperties": {
   23090       "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
   23091         {
   23092           "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-physicalDevice-parameter",
   23093           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   23094         },
   23095         {
   23096           "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceInfo-parameter",
   23097           "text": " <code>pExternalFenceInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkPhysicalDeviceExternalFenceInfo</code> structure"
   23098         },
   23099         {
   23100           "vuid": "VUID-vkGetPhysicalDeviceExternalFenceProperties-pExternalFenceProperties-parameter",
   23101           "text": " <code>pExternalFenceProperties</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkExternalFenceProperties</code> structure"
   23102         }
   23103       ]
   23104     },
   23105     "VkPhysicalDeviceExternalFenceInfo": {
   23106       "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
   23107         {
   23108           "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-sType-sType",
   23109           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO</code>"
   23110         },
   23111         {
   23112           "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-pNext-pNext",
   23113           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23114         },
   23115         {
   23116           "vuid": "VUID-VkPhysicalDeviceExternalFenceInfo-handleType-parameter",
   23117           "text": " <code>handleType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkExternalFenceHandleTypeFlagBits\">VkExternalFenceHandleTypeFlagBits</a> value"
   23118         }
   23119       ]
   23120     },
   23121     "VkExternalFenceProperties": {
   23122       "(VK_VERSION_1_1,VK_KHR_external_fence_capabilities)": [
   23123         {
   23124           "vuid": "VUID-VkExternalFenceProperties-sType-sType",
   23125           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES</code>"
   23126         },
   23127         {
   23128           "vuid": "VUID-VkExternalFenceProperties-pNext-pNext",
   23129           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23130         }
   23131       ]
   23132     },
   23133     "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT": {
   23134       "(VK_EXT_calibrated_timestamps)": [
   23135         {
   23136           "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-physicalDevice-parameter",
   23137           "text": " <code>physicalDevice</code> <strong class=\"purple\">must</strong> be a valid <code>VkPhysicalDevice</code> handle"
   23138         },
   23139         {
   23140           "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomainCount-parameter",
   23141           "text": " <code>pTimeDomainCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   23142         },
   23143         {
   23144           "vuid": "VUID-vkGetPhysicalDeviceCalibrateableTimeDomainsEXT-pTimeDomains-parameter",
   23145           "text": " If the value referenced by <code>pTimeDomainCount</code> is not <code>0</code>, and <code>pTimeDomains</code> is not <code>NULL</code>, <code>pTimeDomains</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pTimeDomainCount</code> <a href=\"#VkTimeDomainEXT\">VkTimeDomainEXT</a> values"
   23146         }
   23147       ]
   23148     },
   23149     "vkSetDebugUtilsObjectNameEXT": {
   23150       "(VK_EXT_debug_utils)": [
   23151         {
   23152           "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02587",
   23153           "text": " <code>pNameInfo</code>-&gt;<code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
   23154         },
   23155         {
   23156           "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-02588",
   23157           "text": " <code>pNameInfo</code>-&gt;<code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   23158         },
   23159         {
   23160           "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-device-parameter",
   23161           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   23162         },
   23163         {
   23164           "vuid": "VUID-vkSetDebugUtilsObjectNameEXT-pNameInfo-parameter",
   23165           "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectNameInfoEXT</code> structure"
   23166         }
   23167       ]
   23168     },
   23169     "VkDebugUtilsObjectNameInfoEXT": {
   23170       "(VK_EXT_debug_utils)": [
   23171         {
   23172           "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02589",
   23173           "text": " If <code>objectType</code> is <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   23174         },
   23175         {
   23176           "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-02590",
   23177           "text": " If <code>objectType</code> is not <code>VK_OBJECT_TYPE_UNKNOWN</code>, <code>objectHandle</code> <strong class=\"purple\">must</strong> be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a> or a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table"
   23178         },
   23179         {
   23180           "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-sType-sType",
   23181           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT</code>"
   23182         },
   23183         {
   23184           "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pNext-pNext",
   23185           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23186         },
   23187         {
   23188           "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-objectType-parameter",
   23189           "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
   23190         },
   23191         {
   23192           "vuid": "VUID-VkDebugUtilsObjectNameInfoEXT-pObjectName-parameter",
   23193           "text": " If <code>pObjectName</code> is not <code>NULL</code>, <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   23194         }
   23195       ]
   23196     },
   23197     "vkSetDebugUtilsObjectTagEXT": {
   23198       "(VK_EXT_debug_utils)": [
   23199         {
   23200           "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-device-parameter",
   23201           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   23202         },
   23203         {
   23204           "vuid": "VUID-vkSetDebugUtilsObjectTagEXT-pTagInfo-parameter",
   23205           "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsObjectTagInfoEXT</code> structure"
   23206         }
   23207       ]
   23208     },
   23209     "VkDebugUtilsObjectTagInfoEXT": {
   23210       "(VK_EXT_debug_utils)": [
   23211         {
   23212           "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-01908",
   23213           "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
   23214         },
   23215         {
   23216           "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectHandle-01910",
   23217           "text": " <code>objectHandle</code> <strong class=\"purple\">must</strong> be a valid Vulkan handle of the type associated with <code>objectType</code> as defined in the <a href=\"#debugging-object-types\">VkObjectType and Vulkan Handle Relationship</a> table"
   23218         },
   23219         {
   23220           "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-sType-sType",
   23221           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT</code>"
   23222         },
   23223         {
   23224           "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pNext-pNext",
   23225           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23226         },
   23227         {
   23228           "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-objectType-parameter",
   23229           "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkObjectType\">VkObjectType</a> value"
   23230         },
   23231         {
   23232           "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-pTag-parameter",
   23233           "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
   23234         },
   23235         {
   23236           "vuid": "VUID-VkDebugUtilsObjectTagInfoEXT-tagSize-arraylength",
   23237           "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   23238         }
   23239       ]
   23240     },
   23241     "vkQueueBeginDebugUtilsLabelEXT": {
   23242       "(VK_EXT_debug_utils)": [
   23243         {
   23244           "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-queue-parameter",
   23245           "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
   23246         },
   23247         {
   23248           "vuid": "VUID-vkQueueBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
   23249           "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
   23250         }
   23251       ]
   23252     },
   23253     "VkDebugUtilsLabelEXT": {
   23254       "(VK_EXT_debug_utils)": [
   23255         {
   23256           "vuid": "VUID-VkDebugUtilsLabelEXT-sType-sType",
   23257           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT</code>"
   23258         },
   23259         {
   23260           "vuid": "VUID-VkDebugUtilsLabelEXT-pNext-pNext",
   23261           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23262         },
   23263         {
   23264           "vuid": "VUID-VkDebugUtilsLabelEXT-pLabelName-parameter",
   23265           "text": " <code>pLabelName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   23266         }
   23267       ]
   23268     },
   23269     "vkQueueEndDebugUtilsLabelEXT": {
   23270       "(VK_EXT_debug_utils)": [
   23271         {
   23272           "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-None-01911",
   23273           "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkQueueBeginDebugUtilsLabelEXT</code> command prior to the <code>vkQueueEndDebugUtilsLabelEXT</code> on the queue"
   23274         },
   23275         {
   23276           "vuid": "VUID-vkQueueEndDebugUtilsLabelEXT-queue-parameter",
   23277           "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
   23278         }
   23279       ]
   23280     },
   23281     "vkQueueInsertDebugUtilsLabelEXT": {
   23282       "(VK_EXT_debug_utils)": [
   23283         {
   23284           "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-queue-parameter",
   23285           "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
   23286         },
   23287         {
   23288           "vuid": "VUID-vkQueueInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
   23289           "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
   23290         }
   23291       ]
   23292     },
   23293     "vkCmdBeginDebugUtilsLabelEXT": {
   23294       "(VK_EXT_debug_utils)": [
   23295         {
   23296           "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-parameter",
   23297           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   23298         },
   23299         {
   23300           "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-pLabelInfo-parameter",
   23301           "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
   23302         },
   23303         {
   23304           "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-recording",
   23305           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   23306         },
   23307         {
   23308           "vuid": "VUID-vkCmdBeginDebugUtilsLabelEXT-commandBuffer-cmdpool",
   23309           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   23310         }
   23311       ]
   23312     },
   23313     "vkCmdEndDebugUtilsLabelEXT": {
   23314       "(VK_EXT_debug_utils)": [
   23315         {
   23316           "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01912",
   23317           "text": " There <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command prior to the <code>vkCmdEndDebugUtilsLabelEXT</code> on the queue that <code>commandBuffer</code> is submitted to"
   23318         },
   23319         {
   23320           "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-01913",
   23321           "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <code>vkCmdBeginDebugUtilsLabelEXT</code> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <code>vkCmdEndDebugUtilsLabelEXT</code>."
   23322         },
   23323         {
   23324           "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-parameter",
   23325           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   23326         },
   23327         {
   23328           "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-recording",
   23329           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   23330         },
   23331         {
   23332           "vuid": "VUID-vkCmdEndDebugUtilsLabelEXT-commandBuffer-cmdpool",
   23333           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   23334         }
   23335       ]
   23336     },
   23337     "vkCmdInsertDebugUtilsLabelEXT": {
   23338       "(VK_EXT_debug_utils)": [
   23339         {
   23340           "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-parameter",
   23341           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   23342         },
   23343         {
   23344           "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-pLabelInfo-parameter",
   23345           "text": " <code>pLabelInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsLabelEXT</code> structure"
   23346         },
   23347         {
   23348           "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-recording",
   23349           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   23350         },
   23351         {
   23352           "vuid": "VUID-vkCmdInsertDebugUtilsLabelEXT-commandBuffer-cmdpool",
   23353           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   23354         }
   23355       ]
   23356     },
   23357     "vkCreateDebugUtilsMessengerEXT": {
   23358       "(VK_EXT_debug_utils)": [
   23359         {
   23360           "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-instance-parameter",
   23361           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   23362         },
   23363         {
   23364           "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pCreateInfo-parameter",
   23365           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCreateInfoEXT</code> structure"
   23366         },
   23367         {
   23368           "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pAllocator-parameter",
   23369           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   23370         },
   23371         {
   23372           "vuid": "VUID-vkCreateDebugUtilsMessengerEXT-pMessenger-parameter",
   23373           "text": " <code>pMessenger</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugUtilsMessengerEXT</code> handle"
   23374         }
   23375       ]
   23376     },
   23377     "VkDebugUtilsMessengerCreateInfoEXT": {
   23378       "(VK_EXT_debug_utils)": [
   23379         {
   23380           "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-pfnUserCallback-01914",
   23381           "text": " <code>pfnUserCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugUtilsMessengerCallbackEXT\">PFN_vkDebugUtilsMessengerCallbackEXT</a>"
   23382         },
   23383         {
   23384           "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-sType-sType",
   23385           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT</code>"
   23386         },
   23387         {
   23388           "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-flags-zerobitmask",
   23389           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   23390         },
   23391         {
   23392           "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-parameter",
   23393           "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> values"
   23394         },
   23395         {
   23396           "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageSeverity-requiredbitmask",
   23397           "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   23398         },
   23399         {
   23400           "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-parameter",
   23401           "text": " <code>messageType</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
   23402         },
   23403         {
   23404           "vuid": "VUID-VkDebugUtilsMessengerCreateInfoEXT-messageType-requiredbitmask",
   23405           "text": " <code>messageType</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   23406         }
   23407       ]
   23408     },
   23409     "VkDebugUtilsMessengerCallbackDataEXT": {
   23410       "(VK_EXT_debug_utils)": [
   23411         {
   23412           "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-sType-sType",
   23413           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT</code>"
   23414         },
   23415         {
   23416           "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pNext-pNext",
   23417           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23418         },
   23419         {
   23420           "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-flags-zerobitmask",
   23421           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be <code>0</code>"
   23422         },
   23423         {
   23424           "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessageIdName-parameter",
   23425           "text": " If <code>pMessageIdName</code> is not <code>NULL</code>, <code>pMessageIdName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   23426         },
   23427         {
   23428           "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pMessage-parameter",
   23429           "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   23430         },
   23431         {
   23432           "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pQueueLabels-parameter",
   23433           "text": " If <code>queueLabelCount</code> is not <code>0</code>, <code>pQueueLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>queueLabelCount</code> valid <code>VkDebugUtilsLabelEXT</code> structures"
   23434         },
   23435         {
   23436           "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pCmdBufLabels-parameter",
   23437           "text": " If <code>cmdBufLabelCount</code> is not <code>0</code>, <code>pCmdBufLabels</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>cmdBufLabelCount</code> valid <code>VkDebugUtilsLabelEXT</code> structures"
   23438         },
   23439         {
   23440           "vuid": "VUID-VkDebugUtilsMessengerCallbackDataEXT-pObjects-parameter",
   23441           "text": " If <code>objectCount</code> is not <code>0</code>, <code>pObjects</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>objectCount</code> valid <code>VkDebugUtilsObjectNameInfoEXT</code> structures"
   23442         }
   23443       ]
   23444     },
   23445     "vkSubmitDebugUtilsMessageEXT": {
   23446       "(VK_EXT_debug_utils)": [
   23447         {
   23448           "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-objectType-02591",
   23449           "text": " <code>objectType</code> member of each element of <code>pCallbackData</code>-&gt;<code>pObjects</code> <strong class=\"purple\">must</strong> not be <code>VK_OBJECT_TYPE_UNKNOWN</code>"
   23450         },
   23451         {
   23452           "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-instance-parameter",
   23453           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   23454         },
   23455         {
   23456           "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageSeverity-parameter",
   23457           "text": " <code>messageSeverity</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugUtilsMessageSeverityFlagBitsEXT\">VkDebugUtilsMessageSeverityFlagBitsEXT</a> value"
   23458         },
   23459         {
   23460           "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-parameter",
   23461           "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugUtilsMessageTypeFlagBitsEXT\">VkDebugUtilsMessageTypeFlagBitsEXT</a> values"
   23462         },
   23463         {
   23464           "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-messageTypes-requiredbitmask",
   23465           "text": " <code>messageTypes</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   23466         },
   23467         {
   23468           "vuid": "VUID-vkSubmitDebugUtilsMessageEXT-pCallbackData-parameter",
   23469           "text": " <code>pCallbackData</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugUtilsMessengerCallbackDataEXT</code> structure"
   23470         }
   23471       ]
   23472     },
   23473     "vkDestroyDebugUtilsMessengerEXT": {
   23474       "(VK_EXT_debug_utils)": [
   23475         {
   23476           "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01915",
   23477           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   23478         },
   23479         {
   23480           "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-01916",
   23481           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>messenger</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23482         },
   23483         {
   23484           "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-instance-parameter",
   23485           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   23486         },
   23487         {
   23488           "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parameter",
   23489           "text": " <code>messenger</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugUtilsMessengerEXT</code> handle"
   23490         },
   23491         {
   23492           "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-pAllocator-parameter",
   23493           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   23494         },
   23495         {
   23496           "vuid": "VUID-vkDestroyDebugUtilsMessengerEXT-messenger-parent",
   23497           "text": " <code>messenger</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
   23498         }
   23499       ]
   23500     },
   23501     "vkDebugMarkerSetObjectNameEXT": {
   23502       "(VK_EXT_debug_marker)": [
   23503         {
   23504           "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-device-parameter",
   23505           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   23506         },
   23507         {
   23508           "vuid": "VUID-vkDebugMarkerSetObjectNameEXT-pNameInfo-parameter",
   23509           "text": " <code>pNameInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectNameInfoEXT</code> structure"
   23510         }
   23511       ]
   23512     },
   23513     "VkDebugMarkerObjectNameInfoEXT": {
   23514       "(VK_EXT_debug_marker)": [
   23515         {
   23516           "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-01490",
   23517           "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
   23518         },
   23519         {
   23520           "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01491",
   23521           "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   23522         },
   23523         {
   23524           "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-object-01492",
   23525           "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
   23526         },
   23527         {
   23528           "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-sType-sType",
   23529           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT</code>"
   23530         },
   23531         {
   23532           "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pNext-pNext",
   23533           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23534         },
   23535         {
   23536           "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-objectType-parameter",
   23537           "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
   23538         },
   23539         {
   23540           "vuid": "VUID-VkDebugMarkerObjectNameInfoEXT-pObjectName-parameter",
   23541           "text": " <code>pObjectName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   23542         }
   23543       ]
   23544     },
   23545     "vkDebugMarkerSetObjectTagEXT": {
   23546       "(VK_EXT_debug_marker)": [
   23547         {
   23548           "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-device-parameter",
   23549           "text": " <code>device</code> <strong class=\"purple\">must</strong> be a valid <code>VkDevice</code> handle"
   23550         },
   23551         {
   23552           "vuid": "VUID-vkDebugMarkerSetObjectTagEXT-pTagInfo-parameter",
   23553           "text": " <code>pTagInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerObjectTagInfoEXT</code> structure"
   23554         }
   23555       ]
   23556     },
   23557     "VkDebugMarkerObjectTagInfoEXT": {
   23558       "(VK_EXT_debug_marker)": [
   23559         {
   23560           "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-01493",
   23561           "text": " <code>objectType</code> <strong class=\"purple\">must</strong> not be <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code>"
   23562         },
   23563         {
   23564           "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01494",
   23565           "text": " <code>object</code> <strong class=\"purple\">must</strong> not be <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   23566         },
   23567         {
   23568           "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-object-01495",
   23569           "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
   23570         },
   23571         {
   23572           "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-sType-sType",
   23573           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT</code>"
   23574         },
   23575         {
   23576           "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pNext-pNext",
   23577           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23578         },
   23579         {
   23580           "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-objectType-parameter",
   23581           "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
   23582         },
   23583         {
   23584           "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-pTag-parameter",
   23585           "text": " <code>pTag</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>tagSize</code> bytes"
   23586         },
   23587         {
   23588           "vuid": "VUID-VkDebugMarkerObjectTagInfoEXT-tagSize-arraylength",
   23589           "text": " <code>tagSize</code> <strong class=\"purple\">must</strong> be greater than <code>0</code>"
   23590         }
   23591       ]
   23592     },
   23593     "vkCmdDebugMarkerBeginEXT": {
   23594       "(VK_EXT_debug_marker)": [
   23595         {
   23596           "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-parameter",
   23597           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   23598         },
   23599         {
   23600           "vuid": "VUID-vkCmdDebugMarkerBeginEXT-pMarkerInfo-parameter",
   23601           "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure"
   23602         },
   23603         {
   23604           "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-recording",
   23605           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   23606         },
   23607         {
   23608           "vuid": "VUID-vkCmdDebugMarkerBeginEXT-commandBuffer-cmdpool",
   23609           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   23610         }
   23611       ]
   23612     },
   23613     "VkDebugMarkerMarkerInfoEXT": {
   23614       "(VK_EXT_debug_marker)": [
   23615         {
   23616           "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-sType-sType",
   23617           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT</code>"
   23618         },
   23619         {
   23620           "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pNext-pNext",
   23621           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23622         },
   23623         {
   23624           "vuid": "VUID-VkDebugMarkerMarkerInfoEXT-pMarkerName-parameter",
   23625           "text": " <code>pMarkerName</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   23626         }
   23627       ]
   23628     },
   23629     "vkCmdDebugMarkerEndEXT": {
   23630       "(VK_EXT_debug_marker)": [
   23631         {
   23632           "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01239",
   23633           "text": " There <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command prior to the <code>vkCmdDebugMarkerEndEXT</code> on the queue that <code>commandBuffer</code> is submitted to"
   23634         },
   23635         {
   23636           "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-01240",
   23637           "text": " If <code>commandBuffer</code> is a secondary command buffer, there <strong class=\"purple\">must</strong> be an outstanding <a href=\"#vkCmdDebugMarkerBeginEXT\">vkCmdDebugMarkerBeginEXT</a> command recorded to <code>commandBuffer</code> that has not previously been ended by a call to <a href=\"#vkCmdDebugMarkerEndEXT\">vkCmdDebugMarkerEndEXT</a>."
   23638         },
   23639         {
   23640           "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-parameter",
   23641           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   23642         },
   23643         {
   23644           "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-recording",
   23645           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   23646         },
   23647         {
   23648           "vuid": "VUID-vkCmdDebugMarkerEndEXT-commandBuffer-cmdpool",
   23649           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   23650         }
   23651       ]
   23652     },
   23653     "vkCmdDebugMarkerInsertEXT": {
   23654       "(VK_EXT_debug_marker)": [
   23655         {
   23656           "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-parameter",
   23657           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   23658         },
   23659         {
   23660           "vuid": "VUID-vkCmdDebugMarkerInsertEXT-pMarkerInfo-parameter",
   23661           "text": " <code>pMarkerInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugMarkerMarkerInfoEXT</code> structure"
   23662         },
   23663         {
   23664           "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-recording",
   23665           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   23666         },
   23667         {
   23668           "vuid": "VUID-vkCmdDebugMarkerInsertEXT-commandBuffer-cmdpool",
   23669           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, or compute operations"
   23670         }
   23671       ]
   23672     },
   23673     "vkCreateDebugReportCallbackEXT": {
   23674       "(VK_EXT_debug_report)": [
   23675         {
   23676           "vuid": "VUID-vkCreateDebugReportCallbackEXT-instance-parameter",
   23677           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   23678         },
   23679         {
   23680           "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCreateInfo-parameter",
   23681           "text": " <code>pCreateInfo</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkDebugReportCallbackCreateInfoEXT</code> structure"
   23682         },
   23683         {
   23684           "vuid": "VUID-vkCreateDebugReportCallbackEXT-pAllocator-parameter",
   23685           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   23686         },
   23687         {
   23688           "vuid": "VUID-vkCreateDebugReportCallbackEXT-pCallback-parameter",
   23689           "text": " <code>pCallback</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>VkDebugReportCallbackEXT</code> handle"
   23690         }
   23691       ]
   23692     },
   23693     "VkDebugReportCallbackCreateInfoEXT": {
   23694       "(VK_EXT_debug_report)": [
   23695         {
   23696           "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-pfnCallback-01385",
   23697           "text": " <code>pfnCallback</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#PFN_vkDebugReportCallbackEXT\">PFN_vkDebugReportCallbackEXT</a>"
   23698         },
   23699         {
   23700           "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-sType-sType",
   23701           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT</code>"
   23702         },
   23703         {
   23704           "vuid": "VUID-VkDebugReportCallbackCreateInfoEXT-flags-parameter",
   23705           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
   23706         }
   23707       ]
   23708     },
   23709     "vkDebugReportMessageEXT": {
   23710       "(VK_EXT_debug_report)": [
   23711         {
   23712           "vuid": "VUID-vkDebugReportMessageEXT-object-01241",
   23713           "text": " <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object or <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>"
   23714         },
   23715         {
   23716           "vuid": "VUID-vkDebugReportMessageEXT-objectType-01498",
   23717           "text": " If <code>objectType</code> is not <code>VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT</code> and <code>object</code> is not <a href=\"#VK_NULL_HANDLE\">VK_NULL_HANDLE</a>, <code>object</code> <strong class=\"purple\">must</strong> be a Vulkan object of the corresponding type associated with <code>objectType</code> as defined in <a href=\"#debug-report-object-types\">VkDebugReportObjectTypeEXT and Vulkan Handle Relationship</a>."
   23718         },
   23719         {
   23720           "vuid": "VUID-vkDebugReportMessageEXT-instance-parameter",
   23721           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   23722         },
   23723         {
   23724           "vuid": "VUID-vkDebugReportMessageEXT-flags-parameter",
   23725           "text": " <code>flags</code> <strong class=\"purple\">must</strong> be a valid combination of <a href=\"#VkDebugReportFlagBitsEXT\">VkDebugReportFlagBitsEXT</a> values"
   23726         },
   23727         {
   23728           "vuid": "VUID-vkDebugReportMessageEXT-flags-requiredbitmask",
   23729           "text": " <code>flags</code> <strong class=\"purple\">must</strong> not be <code>0</code>"
   23730         },
   23731         {
   23732           "vuid": "VUID-vkDebugReportMessageEXT-objectType-parameter",
   23733           "text": " <code>objectType</code> <strong class=\"purple\">must</strong> be a valid <a href=\"#VkDebugReportObjectTypeEXT\">VkDebugReportObjectTypeEXT</a> value"
   23734         },
   23735         {
   23736           "vuid": "VUID-vkDebugReportMessageEXT-pLayerPrefix-parameter",
   23737           "text": " <code>pLayerPrefix</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   23738         },
   23739         {
   23740           "vuid": "VUID-vkDebugReportMessageEXT-pMessage-parameter",
   23741           "text": " <code>pMessage</code> <strong class=\"purple\">must</strong> be a null-terminated UTF-8 string"
   23742         }
   23743       ]
   23744     },
   23745     "vkDestroyDebugReportCallbackEXT": {
   23746       "(VK_EXT_debug_report)": [
   23747         {
   23748           "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01242",
   23749           "text": " If <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, a compatible set of callbacks <strong class=\"purple\">must</strong> be provided here"
   23750         },
   23751         {
   23752           "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-01243",
   23753           "text": " If no <code>VkAllocationCallbacks</code> were provided when <code>callback</code> was created, <code>pAllocator</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23754         },
   23755         {
   23756           "vuid": "VUID-vkDestroyDebugReportCallbackEXT-instance-parameter",
   23757           "text": " <code>instance</code> <strong class=\"purple\">must</strong> be a valid <code>VkInstance</code> handle"
   23758         },
   23759         {
   23760           "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parameter",
   23761           "text": " <code>callback</code> <strong class=\"purple\">must</strong> be a valid <code>VkDebugReportCallbackEXT</code> handle"
   23762         },
   23763         {
   23764           "vuid": "VUID-vkDestroyDebugReportCallbackEXT-pAllocator-parameter",
   23765           "text": " If <code>pAllocator</code> is not <code>NULL</code>, <code>pAllocator</code> <strong class=\"purple\">must</strong> be a valid pointer to a valid <code>VkAllocationCallbacks</code> structure"
   23766         },
   23767         {
   23768           "vuid": "VUID-vkDestroyDebugReportCallbackEXT-callback-parent",
   23769           "text": " <code>callback</code> <strong class=\"purple\">must</strong> have been created, allocated, or retrieved from <code>instance</code>"
   23770         }
   23771       ]
   23772     },
   23773     "vkCmdSetCheckpointNV": {
   23774       "(VK_NV_device_diagnostic_checkpoints)": [
   23775         {
   23776           "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-parameter",
   23777           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be a valid <code>VkCommandBuffer</code> handle"
   23778         },
   23779         {
   23780           "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-recording",
   23781           "text": " <code>commandBuffer</code> <strong class=\"purple\">must</strong> be in the <a href=\"#commandbuffers-lifecycle\">recording state</a>"
   23782         },
   23783         {
   23784           "vuid": "VUID-vkCmdSetCheckpointNV-commandBuffer-cmdpool",
   23785           "text": " The <code>VkCommandPool</code> that <code>commandBuffer</code> was allocated from <strong class=\"purple\">must</strong> support graphics, compute, or transfer operations"
   23786         }
   23787       ]
   23788     },
   23789     "vkGetQueueCheckpointDataNV": {
   23790       "(VK_NV_device_diagnostic_checkpoints)": [
   23791         {
   23792           "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-02025",
   23793           "text": " The device that <code>queue</code> belongs to <strong class=\"purple\">must</strong> be in the lost state"
   23794         },
   23795         {
   23796           "vuid": "VUID-vkGetQueueCheckpointDataNV-queue-parameter",
   23797           "text": " <code>queue</code> <strong class=\"purple\">must</strong> be a valid <code>VkQueue</code> handle"
   23798         },
   23799         {
   23800           "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointDataCount-parameter",
   23801           "text": " <code>pCheckpointDataCount</code> <strong class=\"purple\">must</strong> be a valid pointer to a <code>uint32_t</code> value"
   23802         },
   23803         {
   23804           "vuid": "VUID-vkGetQueueCheckpointDataNV-pCheckpointData-parameter",
   23805           "text": " If the value referenced by <code>pCheckpointDataCount</code> is not <code>0</code>, and <code>pCheckpointData</code> is not <code>NULL</code>, <code>pCheckpointData</code> <strong class=\"purple\">must</strong> be a valid pointer to an array of <code>pCheckpointDataCount</code> <code>VkCheckpointDataNV</code> structures"
   23806         }
   23807       ]
   23808     },
   23809     "VkCheckpointDataNV": {
   23810       "(VK_NV_device_diagnostic_checkpoints)": [
   23811         {
   23812           "vuid": "VUID-VkCheckpointDataNV-sType-sType",
   23813           "text": " <code>sType</code> <strong class=\"purple\">must</strong> be <code>VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV</code>"
   23814         },
   23815         {
   23816           "vuid": "VUID-VkCheckpointDataNV-pNext-pNext",
   23817           "text": " <code>pNext</code> <strong class=\"purple\">must</strong> be <code>NULL</code>"
   23818         }
   23819       ]
   23820     }
   23821   }
   23822 }